MS SQL 服务器不允许我将 IDENTITY_INSERT 设置为 ON
MS SQL Server does not let me set IDENTITY_INSERT to ON
我在数据库 (MS SQL Server 2008) 中有一个 table,里面装满了数据。我想将其中一些数据(其中有一个具有 IDENTITY 约束的列)移动到另一个数据库中具有相同名称的 table 以用于备份目的。由于我有一个 table,其中包含我要移动的 IDENTITY 列,因此我需要将 IDENTITY_INSERT 设置为 ON。我不想对此进行硬编码,因为将来我可能会有其他 table 和专栏遇到此问题。
我已经摆弄这段代码几个小时了,但无法让它工作:
SET IDENTITY_INSERT FDW_test2.dbo.[MIS-ODB_INOUT_LOG] OFF
declare @IDENTITY_INSERTTableCommand nchar(150) = 'SET IDENTITY_INSERT
FDW_test2.dbo.[MIS-ODB_INOUT_LOG] ON'
execute (@IDENTITY_INSERTTableCommand)
INSERT INTO FDW_test2.dbo.[MIS-ODB_INOUT_LOG] ([INOUT_Link ID],
[INOUT_DIARY_KEY])
SELECT [INOUT_Link ID], [INOUT_DIARY_KEY]
FROM FDW.dbo.[MIS-ODB_INOUT_LOG]
WHERE [INOUT_Client ID] = '1-197'
我在 运行 此脚本时收到以下错误:只有在使用列列表且 IDENTITY_INSERT 为 ON 时,才能指定 table 中标识列的显式值SQL服务器。
似乎 MS SQL 忽略了我的字符串 @IDENTITY_INSERTTableCommand 中的 'ON',但是当我在字符串中输入乱码时它会抱怨合成错误。
谁能告诉我我做错了什么?提前谢谢你。
一旦 execute
完成,IDENTITY_INSERT
将返回 OFF
。它将 ON
仅在 execute
内
将Insert
语句移动到string并执行
declare @IDENTITY_INSERTTableCommand nvarchar(2000) =
'SET IDENTITY_INSERT FDW_test2.dbo.[MIS-ODB_INOUT_LOG] ON
INSERT INTO FDW_test2.dbo.[MIS-ODB_INOUT_LOG] ([INOUT_Link ID],
[INOUT_DIARY_KEY])
SELECT [INOUT_Link ID], [INOUT_DIARY_KEY]
FROM FDW.dbo.[MIS-ODB_INOUT_LOG]
WHERE [INOUT_Client ID] = ''1-197''
'
execute (@IDENTITY_INSERTTableCommand)
我在数据库 (MS SQL Server 2008) 中有一个 table,里面装满了数据。我想将其中一些数据(其中有一个具有 IDENTITY 约束的列)移动到另一个数据库中具有相同名称的 table 以用于备份目的。由于我有一个 table,其中包含我要移动的 IDENTITY 列,因此我需要将 IDENTITY_INSERT 设置为 ON。我不想对此进行硬编码,因为将来我可能会有其他 table 和专栏遇到此问题。
我已经摆弄这段代码几个小时了,但无法让它工作:
SET IDENTITY_INSERT FDW_test2.dbo.[MIS-ODB_INOUT_LOG] OFF
declare @IDENTITY_INSERTTableCommand nchar(150) = 'SET IDENTITY_INSERT
FDW_test2.dbo.[MIS-ODB_INOUT_LOG] ON'
execute (@IDENTITY_INSERTTableCommand)
INSERT INTO FDW_test2.dbo.[MIS-ODB_INOUT_LOG] ([INOUT_Link ID],
[INOUT_DIARY_KEY])
SELECT [INOUT_Link ID], [INOUT_DIARY_KEY]
FROM FDW.dbo.[MIS-ODB_INOUT_LOG]
WHERE [INOUT_Client ID] = '1-197'
我在 运行 此脚本时收到以下错误:只有在使用列列表且 IDENTITY_INSERT 为 ON 时,才能指定 table 中标识列的显式值SQL服务器。
似乎 MS SQL 忽略了我的字符串 @IDENTITY_INSERTTableCommand 中的 'ON',但是当我在字符串中输入乱码时它会抱怨合成错误。
谁能告诉我我做错了什么?提前谢谢你。
一旦 execute
完成,IDENTITY_INSERT
将返回 OFF
。它将 ON
仅在 execute
将Insert
语句移动到string并执行
declare @IDENTITY_INSERTTableCommand nvarchar(2000) =
'SET IDENTITY_INSERT FDW_test2.dbo.[MIS-ODB_INOUT_LOG] ON
INSERT INTO FDW_test2.dbo.[MIS-ODB_INOUT_LOG] ([INOUT_Link ID],
[INOUT_DIARY_KEY])
SELECT [INOUT_Link ID], [INOUT_DIARY_KEY]
FROM FDW.dbo.[MIS-ODB_INOUT_LOG]
WHERE [INOUT_Client ID] = ''1-197''
'
execute (@IDENTITY_INSERTTableCommand)