admin

SQL Server错误:即使我将IDENTITY_INSERT ON设置为``也不能为标识列插入显式值''

sql

我真的复查了几次,这就是我要问的原因。寻找指导…

我有一张桌子,如下面的脚本所示。然后,我设定IDENTITY_INSERT ON。然后我尝试执行插入选择,(我需要非常相同的ID)

我不断收到此错误:

消息544,级别16,状态1,第2
行,当IDENTITY_INSERT设置为OFF时,无法为表’Table1’中的标识列插入显式值。

有人知道为什么吗?在数据库级别进行的任何设置都可以否决IDENTITY_INSERT ON

我感谢任何建议。在此先感谢您的问候。

表脚本:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].Table1
(
    [TableId] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](256) NOT NULL,
    [RowVersion] [timestamp] NOT NULL,
    [AddedDate] [datetime2](7) NOT NULL,
    [stuff2] [int] NOT NULL,
    [ModifiedDate] [datetime2](7) NOT NULL,
    [LastModifiedBy] [int] NOT NULL,

    CONSTRAINT [Table1_PK] 
        PRIMARY KEY CLUSTERED ([TableId] ASC)
) ON [PRIMARY]
GO

插入语句:

SET IDENTITY_INSERT [dbo].Table1 ON;

INSERT INTO [dbo].Table1 ([TableId], [Name], [AddedDate], [stuff2], [ModifiedDate], [LastModifiedBy])
    SELECT 
        [RoleID], [Name], [AddedDate], [stuff2], [ModifiedDate], [LastModifiedBy] 
    FROM 
        [dbo].Table2

阅读 160

收藏
2021-06-07

共1个答案

admin

非常感谢@Sami,您可以帮助我实现正确的道路。事实证明,您可以一次将IDENTITY_INSERT应用于一个表(出于显而易见的原因,我经常不这样做)。当我一次处理多个表时,我看到了错误,但是由于表的名称相似,我认为它引发了错误,因为我之前在同一张表上运行了Identity_insert,但这是因为它被另一张桌子。直到我逐一查看错误消息后,我才意识到。:P:D

https://dba.stackexchange.com/questions/12650/why-is-identity-insert-on-only-
allowed-on-one-table-at-a-
time

2021-06-07