我有两个表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 已打开。无法对表"dbo.tblData2"执行 SET 操作
是否可以在 SQL Server 2008 中一次执行多个IDENTITY_INSERT
在任何时候,会话中只有一个表可以将 IDENTITY_INSERT 属性设置为 ON。
因此,在启用另一个之前,您应该打开现有的(如果有的话)。
如果表数较少,您可以在操作前后打开和关闭。
如果表计数很大,则应在操作之前以某种方式自动启用和禁用。
您是否尝试更改顺序
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
在单个会话中,一次只能为一个表设置Identity_Insert。如果表之间没有数据依赖关系,则可以打开多个会话,每个会话处理一组不同的表。每个会话可以设置一个identy_insert表。