我在Foo
名为的数据库中有一个表Bar
,其中有一个名为 的列ID
,它是主键,并且该数据库位于开发 SQL Server 上。
我正在尝试将数据从我们的生产服务器复制到开发服务器,以便我可以使用所述数据,所以我执行以下操作:
set IDENTITY_INSERT Foo.dbo.Bar ON
insert into Foo.dbo.Bar
(
ID
,Something
,Else
,Is
,Going
,Horribly
,Wrong
,With
,SQL
)
select
ID
,Something
,Else
,Is
,Going
,Horribly
,Wrong
,With
,SQL
from Production.Foo.dbo.Bar
set IDENTITY_INSERT Foo.dbo.Bar OFF
我得到了错误
消息 8107,级别 16,状态 1,第 1 行
IDENTITY_INSERT 已经为表 'Foo.dbo.Bar' 开启。无法对表 'Foo.dbo.Bar' 执行 SET 操作。
嗯..好的,所以为表打开了 IDENTITY_INSERT。所以我SET IDENTITY_INSERT Foo.dbo.Bar ON
从我的查询顶部删除了,然后执行它,我得到这个错误:
消息 544,级别 16,状态 1,第 1
行当 IDENTITY_INSERT 设置为 OFF 时,无法在表“Bar”中插入标识列的显式值。
我可以SET IDENTITY_INSERT Foo.dbo.Bar OFF
整天执行,但是如果我尝试打开它ON
,那么 SQL Server 2012 说它IDENTITY_INSERT
已经打开了。