Sql server SQL Server 2008 R2上的SET IDENTITY\u INSERT出现奇怪错误(Msg 8107)
我正在尝试运行这段代码:Sql server SQL Server 2008 R2上的SET IDENTITY\u INSERT出现奇怪错误(Msg 8107),sql-server,sql-server-2008,tsql,sql-server-2008-r2,runtime-error,Sql Server,Sql Server 2008,Tsql,Sql Server 2008 R2,Runtime Error,我正在尝试运行这段代码: SET IDENTITY_INSERT [dbo].[FIN_REP_REPORT_LOG] ON SET IDENTITY_INSERT [dbo].[REPORT_LOG_SEQ] ON INSERT INTO [dbo].[REPORT_LOG_SEQ] ([sqVal]) VALUES (1000000); 我得到了这个错误: 供参考:我将财务报告日志称为“表A”,报告日志如下称为“表B” REPORT_LOG_SEQ表上第二个IDENTITY_INSERT
SET IDENTITY_INSERT [dbo].[FIN_REP_REPORT_LOG] ON
SET IDENTITY_INSERT [dbo].[REPORT_LOG_SEQ] ON
INSERT INTO [dbo].[REPORT_LOG_SEQ] ([sqVal]) VALUES (1000000);
我得到了这个错误:
供参考:我将财务报告日志称为“表A”,报告日志如下称为“表B”
REPORT_LOG_SEQ表上第二个IDENTITY_INSERT语句后的错误消息甚至不相关
SET IDENTITY_INSERT [TABLE B] ON
--Msg 8107, Level 16, State 1, Line 1
--IDENTITY_INSERT is already ON for table [TABLE A].
--Cannot perform SET operation for table [TABLE B].
INSERT INTO语句随后对[表B]失败
INSERT INTO [TABLE B] ([sqVal])
VALUES (1000000)
--Msg 544, Level 16, State 1, Line 1
--Cannot insert explicit value for identity column in table [TABLE B] when IDENTITY_INSERT is set to OFF.
[表B]上的SET操作没有发生,因此插入操作失败
我想知道的是:
- 我一次只运行一行代码李>
- 我正在使用SQLServer2008R2
- 代码在“dev”和“test”服务器中运行良好,但失败了 在生产服务器上
- 生产服务器的“兼容性级别”为100。它是水平的 80用于“开发”和“测试”服务器
- 它们在所讨论的表之间没有相互依赖关系
- 我不是DBA。我只能在“dev”上运行代码。DBA必须运行 关于“测试”和“产品”的代码
- DBA和我一样难堪
SET IDENTITY_INSERT [dbo].[Your tableName] OFF
从那时起,您必须重构代码,使之在启用IDENTITY_INSERT的情况下一次只有一个表。我认为您一次只能为一个表设置IDENTITY INSERT。看起来您正在尝试同时为两个表执行此操作。您为表A启用了IDENTITY_INSERT,并且再次为表B执行此操作。只需为表A执行关闭操作,然后为表B运行,可能就是这样。在dev和test中,我们先处理一个表,然后处理另一个表。
CREATE TABLE [dbo].[REPORT_LOG_SEQ](
[sqVal] [bigint] IDENTITY(1000000,1) NOT NULL
) ON [PRIMARY]
SET IDENTITY_INSERT [dbo].[Your tableName] ON
SET IDENTITY_INSERT [dbo].[Your tableName2] ON
SET IDENTITY_INSERT [dbo].[Your tableName] OFF