加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 由于IDENTITY_INSERT为OFF,因此无法插入显式值,但不能将I

发布时间:2020-12-12 16:45:06 所属栏目:MsSql教程 来源:网络整理
导读:我在数据库Foo中有一个名为Bar的表,它有一个名为ID的列,它是主键,此数据库生活在开发SQL Server上. 我正在尝试将数据从我们的生产服务器复制到开发服务器中,以便我可以使用所述数据,因此我执行以下操作: set IDENTITY_INSERT Foo.dbo.Bar ONinsert into Foo.
我在数据库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,SQL
from Production.Foo.dbo.Bar

set IDENTITY_INSERT Foo.dbo.Bar OFF

我收到错误

Msg 8107,Level 16,State 1,Line 1

IDENTITY_INSERT is already ON for table ‘Foo.dbo.Bar’. Cannot perform SET operation for table ‘Foo.dbo.Bar’.

嗯,所以IDENTITY_INSERT已经打开了.所以我从我的查询的顶部删除了SET IDENTITY_INSERT Foo.dbo.Bar ON,然后执行它,我得到这个错误:

Msg 544,Line 1

Cannot insert explicit value for identity column in table ‘Bar’ when IDENTITY_INSERT is set to OFF.

我可以一整天执行SET IDENTITY_INSERT Foo.dbo.Bar OFF,但是如果我尝试将其打开,则SQL Server 2012说IDENTITY_INSERT已经打开.

解决方法

有趣 – 我刚刚在我的全新ss2012数据库中与4个表中的3个完全相同的问题.

所以我重写了表创建脚本,以插入’set identity on’和’set identity off’,并且它的工作.似乎ss只想一次处理一个表的身份,即您无法设置新的表标识,直到所有其他的关闭.

这样的:

create table Employers
(
id int PRIMARY KEY IDENTITY,companyid nvarchar(50) not null,companyName nvarchar(80) not null,address nvarchar(80),Phone nvarchar(10),);

SET IDENTITY_INSERT employers ON;

insert into Employers(id,companyid,companyName,address,Phone)
Values
(...),(...)

SET IDENTITY_INSERT employers OFF;

create table customers
(
...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读