MS SQL Server не позволяет мне установить IDENTITY_INSERT на ON

У меня есть таблица в базе данных (MS SQL Server 2008), которая заполнена данными. Я хочу переместить некоторые из этих данных (среди которых есть столбец с ограничением IDENTITY) в таблицу с тем же именем в другой базе данных для целей резервного копирования. Поскольку у меня есть таблица со столбцом IDENTITY, которую я хочу переместить, мне нужно установить для IDENTITY_INSERT значение ON. Я не хочу жестко кодировать это, так как в будущем у меня могут появиться другие таблицы и столбцы с этой проблемой.

Я часами возился с этим фрагментом кода и не могу заставить его работать:

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 SQL Server.

Кажется, что MS SQL игнорирует 'ON' в моей строке @IDENTITY_INSERTTableCommand, но жалуется на ошибки синтаксиса, когда я ввожу в строку бессмысленные слова.

Может кто-нибудь сказать мне, что я делаю не так? Заранее спасибо.

1 ответ

Решение

Однажды execute он завершил IDENTITY_INSERT вернусь к OFF, Это будет ON только внутри execute

Переместить Insert заявление в строку и выполнить его

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) 
Другие вопросы по тегам