Массовая вставка из TXT. файл с первичным ключом и временными метками - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть таблица с именем 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.

Есть идеи?

...