我真的复查了几次,这就是我要问的原因。寻找指导…
我有一张桌子,如下面的脚本所示。然后,我设定IDENTITY_INSERT ON。然后我尝试执行插入选择,(我需要非常相同的ID)
IDENTITY_INSERT ON
我不断收到此错误:
消息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
非常感谢@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