为什么我得到一个错误做插入时,IDENTITY_INSERT设置为关闭?

如何在SQL Server 2008中正确地打开它?是使用SQL Server Management Studio吗?

我运行了这个查询:

SET IDENTITY_INSERT Database. dbo. Baskets ON

然后我在控制台中得到命令成功完成的消息。 然而,当我运行应用程序时,它仍然给我如下所示的错误:

Cannot insert explicit value for identity column in table 'Baskets' when 
IDENTITY_INSERT is set to OFF.

当前回答

另一种选择是,当你有像“类型”或“状态”这样的表时,例如,OrderStatus,你总是想控制Id值,创建Id(主键)列而不是Identity列是第一个位置。

其他回答

进口: 必须在INSERT语句中写入列

INSERT INTO TABLE
SELECT * FROM    

不正确。

Insert into Table(Field1,...)
Select (Field1,...) from TABLE

是正确的

当您有一个PRIMARY KEY字段,并且您正在插入一个重复的值,或者您将INSERT_IDENTITY标志设置为on时,很可能会出现这种情况

另一种选择是,当你有像“类型”或“状态”这样的表时,例如,OrderStatus,你总是想控制Id值,创建Id(主键)列而不是Identity列是第一个位置。

通过SQL作为每个MSDN

SET IDENTITY_INSERT sometableWithIdentity ON

INSERT INTO sometableWithIdentity 
    (IdentityColumn, col2, col3, ...)
VALUES 
    (AnIdentityValue, col2value, col3value, ...)

SET IDENTITY_INSERT sometableWithIdentity OFF

完整的错误消息会告诉你到底哪里出错了……

当IDENTITY_INSERT设置为OFF时,无法为表'sometableWithIdentity'中的身份列插入显式值。

我知道这是一个较老的线程,但我只是碰到了这个。如果用户试图在其他会话Set IDENTITY_INSERT on之后对Identity列运行插入,那么他一定会得到上述错误。

设置Identity Insert值和后续的Insert DML命令将由同一个会话运行。

这里@初学者单独设置身份插入,然后从他的应用程序中运行插入。这就是为什么他得到了下面的错误:

Cannot insert explicit value for identity column in table 'Baskets' when 
IDENTITY_INSERT is set to OFF.