如何从现有列中禁用标识&添加数据后,如何在SQL Server 2008中的同一列上再次启用身份?

时间:2013-06-06 12:40:28

标签: sql-server

我必须进行数据迁移。

为此,我必须禁用列的标识。添加数据后,需要再次为SQL Server 2008中的同一列启用该标识。

有人可以解释如何做到这一点,还是有其他方法可以执行相同的任务?

2 个答案:

答案 0 :(得分:3)

使用SET IDENTITY_INSERThttp://msdn.microsoft.com/en-us/library/ms188059.aspx)。

SET IDENTITY_INSERT TableName ON;

-- Insert Data.

SET IDENTITY_INSERT TableName OFF;

答案 1 :(得分:3)

如果您使用普通INSERT语句进行迁移,则可以使用IDENTITY_INSERT *:

SET IDENTITY_INSERT abc ON

INSERT INTO abc (/* Columns */) VALUES
(/* Values */)

SET IDENTITY_INSERT abc OFF

如果您正在使用BULK INSERT,那么您需要KEEPIDENTITY选项。

如果你正在使用SSIS OLE DB Destination,那么你想要使用保持身份选项。

如果您正在使用SQL Server导入和导出向导,那么当您在向导的选择源表和视图页面上选择了适当的工作表/表格时,请选择Edit Mappings...并勾选Enable identity insert选项。


*许多人发现此选项容易混淆,因为他们认为他们告诉系统要做什么 - "请插入身份值" - 相反,感觉是" 我' 将插入身份值"。这就是为什么你在插入之前将转换为,然后将关闭转为,而不是相反。