2014-06-19 81 views
0

我目前通過數據表將數據庫的一部分導出爲XML,並且還需要能夠再次重新導入數據。當您從另一個表創建臨時表時,如何防止自動遞增ID?

我一直在關注http://www.jarloo.com/c-bulk-upsert-to-sql-server-tutorial/爲了批量導入數據,但似乎在導出並重新導入臨時表後,id值正在改變。

我懷疑它們被丟棄,並且臨時表上的自動增量(使用 「將top 0 *置入#import from tblJob;」)導致ID在編輯XML文件時損壞並重新導入被更新錯誤的行

+0

在導入不包括'IDENTITY'列。那會做。 – Rahul

回答

1

您可以讓SqlBulkCopy的知道你想從你的源數據與SqlBulkCopyOptions保持標識值,像這樣:

using (SqlBulkCopy bulk = new SqlBulkCopy(con, SqlBulkCopyOptions.KeepIdentity)) 
{ 
    bulk.DestinationTableName = "#Prices"; 
    bulk.WriteToServer(table); 

} 
+0

如何使用現有連接來完成此操作? VS想爲SQLBulkCopy的構造函數創建一個字符串,而不是連接,但是如果我使用與上面相同的連接,則會出錯,因爲它大概已經連接。 –

+0

當您通過現有連接時,會出現什麼錯誤? –

0

爲了保持身份不變上重新導入:

第一,確保始發記錄不再存在(因爲我假設你的身份也是一個主鍵)

秒,

set identity_insert on [table] 

import your records 

set identity_insert off [table] 

如果您正在執行批量插入任務,映射下還有一個選項?爲「啓用標識插入」

相關問題