2

我必须进行数据迁移。

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

有人可以解释如何做到这一点,或者还有其他方法可以完成相同的任务吗?

4

2 回答 2

3

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

SET IDENTITY_INSERT TableName ON;

-- Insert Data.

SET IDENTITY_INSERT TableName OFF;
于 2013-06-06T12:41:49.667 回答
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 目标,那么您需要使用 Keep Identity 选项。

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


*许多人发现这个选项的命名令人困惑,因为他们认为他们是在告诉系统要做什么——“请插入标识值”——相反,意思是“要插入标识值”。这就是为什么您在插入之前打开它并在之后关闭它,而不是反之亦然。

于 2013-06-06T12:43:25.737 回答