sql - 如何在 SQL Server 2008 中同时为多个表设置 IDENTITY_INSERT ON

标签 sql sql-server database sql-server-2008 sql-server-2008-r2

我有两个表 tblData1tblData2,现在我想从另一个带有身份插入的表迁移记录,我正在尝试运行如下所示的命令

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

但是显示如下错误

IDENTITY_INSERT is already ON for table 'Sample_Training.dbo.tblData1'. Cannot perform SET operation for table 'dbo.tblData2'

是否可以在 SQL Server 2008 中一次执行多个 IDENTITY_INSERT

最佳答案

在任何时候, session 中只有一个表可以将 IDENTITY_INSERT 属性设置为 ON。

所以在启用另一个之前,你应该关闭现有的(如果有的话)。
如果表数较少,您可以在操作前后打开和关闭。
如果表数很大,您应该在操作之前以某种方式自动启用和禁用。

关于sql - 如何在 SQL Server 2008 中同时为多个表设置 IDENTITY_INSERT ON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27615391/

相关文章:

mysql - 如何结合以下两个查询

MySQL 选择列仅包含集合中的值的行

database - 针对 1 行检查的多个 SQL 查询与针对多行检查的 1 个查询

mysql - 如何使用插入和选择语句

ruby-on-rails - 为什么 Rails 迁移在应用程序中而不是在数据库中定义外键?

sql - 发出构建 'result cache' 且不返回结果的 SQL 请求

mysql - SQL计数和求和问题

Python将timedelta类型转换为sql时间类型

sql - 打开 "September$"的行集失败。检查对象是否存在于数据库中

sql - 有没有其他方法可以在sql中实现以下逻辑?