У меня есть таблица с именем Address
, которая имеет AddressID
в качестве первичного ключа (автоинкрементное значение), она также имеет столбец tmsp
, который имеет тип TimeStamp
.
Я создал хранимую процедуру, которая удаляет записи из таблицы, но перед удалением я сохраняю записи в файл .txt
. И в процессе сохранения записей в текстовом файле я конвертирую метку времени в значение Varbinary
. Это означает, что столбец tmsp
сохраняется как Varbinary
в текстовом файле.
Теперь я создаю новую хранимую процедуру для вставки удаленных записей обратно в базу данных, как показано ниже:
DECLARE @SQL NVARCHAR(MAX) = ''
BEGIN
SET IDENTITY_INSERT dbo.Address ON
SET @SQL = N'BULK INSERT Address
FROM ''' + @Address + '''
WITH (
FIRSTROW = 2,
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n''
)'
EXEC sp_executesql @SQL
SET IDENTITY_INSERT dbo.Address OFF
END
Я получаю следующую ошибку:
Сообщение 273, уровень 16, состояние 1, процедура CleanUp_Address, строка 43 [Строка пакетного запуска 2]
Невозможно вставить явное значение в столбец отметки времени. Используйте INSERT со списком столбцов, чтобы исключить столбец отметки времени, или вставьте DEFAULT в столбец отметки времени.
Когда я удаляю IDENTITY_INSERT
, он вставляет данные в таблицу как новое значение, поэтому AddressID
перезаписывается, но это не то, что я хочу. Мне нужно сохранить AddressID
.
Есть идеи?