我有两个表tblData1
和tblData2
,现在我想从另一个表中迁移带有标识插入的记录,我正在尝试运行命令,如下所示
SET IDENTITY_INSERT LP1.dbo.tblData1 ON
GO
SET IDENTITY_INSERT LP1.dbo.tblData2 ON
GO
INSERT INTO LP1.DBO.tblData1 (ID,DATA)
SELECT ID,DATA FROM LP.DBO.tblData1
GO
INSERT INTO LP1.DBO.tblData2 (ID,DATA)
SELECT ID,DATA FROM LP.DBO.tblData2
GO
SET IDENTITY_INSERT LP1.dbo.tblData1 OFF
GO
SET IDENTITY_INSERT LP1.dbo.tblData2 OFF
GO
但它显示错误如下
表'Sample_Training.dbo.tblData1'的IDENTITY_INSERT已经为ON。无法对表'dbo.tblData2'
执行SET操作
是否可以在SQL Server 2008中执行多个IDENTITY_INSERT
答案 0 :(得分:8)
任何时候,会话中只有一个表可以将IDENTITY_INSERT属性设置为ON。
所以在启用另一个之前,如果有的话,你应该转为现有的 如果表格数量较少,您可以在操作前后开启和关闭 如果表计数很大,您应该在操作之前以某种方式自动启用和禁用。
答案 1 :(得分:3)
您是否尝试更改订单
go
SET IDENTITY_INSERT LP1.dbo.tblData1 ON
INSERT INTO LP1.DBO.tblData1
(ID,DATA)
SELECT ID,DATA
FROM LP.DBO.tblData1
SET IDENTITY_INSERT LP1.dbo.tblData1 OFF
GO
SET IDENTITY_INSERT LP1.dbo.tblData2 ON
INSERT INTO LP1.DBO.tblData2
(ID,DATA)
SELECT ID,DATA
FROM LP.DBO.tblData2
SET IDENTITY_INSERT LP1.dbo.tblData2 OFF
GO
答案 2 :(得分:1)
您只能在一个会话中一次为一个表设置Identity_Insert。 如果表之间没有数据依赖性,那么您可以打开多个会话,每个会话处理一组不同的表。每个会话都可以为identy_insert设置一个表。