0

主キー (自動インクリメント値) としてという名前のテーブルがAddressあり、タイプの列もあります。AddressIDtmspTimeStamp

テーブルからレコードを削除するストアド プロシージャを作成しましたが、削除する前にレコードを.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ます。

何か案は?

4

0 に答える 0