当您从另一个表创建临时表时,如何防止自动递增ID?

时间:2014-06-19 20:53:22

标签: c# sql sql-server-2008 tsql datatable

我目前通过数据表将数据库的一部分作为XML导出,并且还需要能够再次重新导入数据。

我一直关注http://www.jarloo.com/c-bulk-upsert-to-sql-server-tutorial/为了批量导入数据,但似乎在导出并重新导入临时表后,id值正在发生变化。

我怀疑它们被丢弃并且临时表上的自动增量(使用 "从tblJob中选择前#0到#import;")导致ID损坏,就像我编辑XML文件并重新导入它更新错误的行一样

2 个答案:

答案 0 :(得分:1)

您可以让SqlBulkCopy知道您希望使用SqlBulkCopyOptions保留源数据中的标识值,如下所示:

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

}

答案 1 :(得分:0)

为了在重新导入时保持身份完整:

首先,确保原始记录不再存在(因为我假设您的身份也是主键)

第二,

set identity_insert on [table]

import your records

set identity_insert off [table]

如果您正在执行批量插入任务,那么在...映射下还有一个选项? to"启用身份插入"