我必须进行数据迁移。
为此,我必须禁用列的标识。添加数据后,需要再次为SQL Server 2008中的同一列启用该标识。
有人可以解释如何做到这一点,还是有其他方法可以执行相同的任务?
答案 0 :(得分: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;
答案 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
选项。
*许多人发现此选项容易混淆,因为他们认为他们告诉系统要做什么 - "请插入身份值" - 相反,感觉是" 我' 将插入身份值"。这就是为什么你在插入之前将转换为,然后将关闭转为,而不是相反。