2012-08-28 32 views
8

我試圖將數據從我的生產數據庫導出到我的開發數據庫,​​但我收到此錯誤:的SQL Server 2008 R2數據導出問題

Messages Error 0xc0202049: Data Flow Task 1: Failure inserting into the read-only column "id". (SQL Server Import and Export Wizard)

有沒有一種方法來檢查其列,因爲我有20個表,他們都使用列名id或至少得到更好的錯誤報告?

+0

我猜測你的開發數據庫中的任何一個表的權限比你試圖導入數據的20個表中的任何一個都要多。您在開發數據庫中使用的用戶標識是否有任何限制? –

+0

不,我是管理員,所以我的用戶名可以訪問完成任何任務 – Geo

回答

2

我所要做的就是:

  • 在列右鍵單擊(在這種情況下,「ID」)
  • 選擇修改
  • 裏面的列屬性,直到你看到標識規格向下滾動
  • 展開視圖並從下拉菜單中選擇NO。

如果有誰知道這樣做,請分享

5

如果列ID是標識列,則可能會設置爲在插入行時自動生成,並且無法直接寫入。

要保留從生產環境到測試連接,使用:

SET Identity_Insert <TableName> ON 

爲了讓你寫的標識值。

+0

我的所有ID列都自動生成其值。我必須運行你的命令20次,然後我想呢?(每個表一次) – Geo

+0

如果你的ID是全局的,那麼你只需要爲負責生成值的表運行它。其他表可能未指定爲IDENTITY列。 –

+0

以及你的例子,你有。我用我的一張桌子試過了,但沒有奏效。這是錯誤:'表'用戶'沒有標識屬性。無法執行SET操作。' – Geo

0

聽起來對我來說,好像您可能試圖將值插入已被聲明爲IDENTITY字段的列中。

0

那麼的不同(快)的方式,答案是有點晚了,但我無論如何張貼提供給社區的緣故。

我假設你試圖複製表格(不是部分數據)。我的回答是基於這個假設。

  1. 通過SSMS中的對象資源管理器連接到源數據庫。
  2. 右鍵單擊要複製表的db
  3. 前往'任務' - >'導出'
  4. 選擇您的源和目標服務器,並且如果您不希望在雙手按下一步('從一個或多個表或視圖中複製數據')之前運行其他腳本。現在您可以選擇要複製到目標的表格。

選擇想要完全複製到目標的表格。然後點擊'編輯映射'。在這裏你可以'啓用身份識別'。您還可以選擇其他選項,然後在按OK前檢查屏幕。

如果您在此處未使用SSMS的快速版本,則可以創建一個SSIS包來創建作業並在將來自動化此過程。您可以檢查'立即運行',然後按照屏幕上的說明處理所有警告和錯誤。希望你會得到一個。祝你好運!

Tested with: 
(
    Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) 
    Jun 17 2011 00:57:23 
    Copyright (c) Microsoft Corporation 
    Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2) 
) 
24

只要點擊Edit mappings當你選擇表格導入和。並檢查Enable identity insert複選框。而且你應該爲每個選定的桌子做這個。然後你可以完成你的導入。它在相同的情況下幫助了我。