私のコード:
SET IDENTITY_INSERT SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn ON
INSERT INTO SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn
SELECT ColumnWithIdentity, OtherColumnWithoutIdentity, LastColumnInThisTable
FROM ALinkedServer.PrettyCoolDatabaseAsWell.StandardSchema.TableWithIdentityColumn
SET IDENTITY_INSERT SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn OFF
エラー:
メッセージ8101、レベル16、状態1、行4
テーブル 'SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn'のID列の明示的な値は、列リストが使用され、IDENTITY_INSERTがONの場合にのみ指定できます。
何ができますか?
列リストをコードに追加します。
SET IDENTITY_INSERT SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn ON
INSERT INTO SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn
(ColumnWithIdentity, OtherColumnWithoutIdentity, LastColumnInThisTable)
SELECT ColumnWithIdentity, OtherColumnWithoutIdentity, LastColumnInThisTable
FROM ALinkedServer.PrettyCoolDatabaseAsWell.StandardSchema.TableWithIdentityColumn
SET IDENTITY_INSERT SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn OFF
GO
基本的に、列リストとは、挿入する列を明示的に指定する場合です。
IDENTITY_INSERT ON
、IDである列の値を挿入ステートメントで指定する必要があります(この場合、列ColumnWithIdentity
)。 IDENTITY_INSERT OFF
、SQL ServerはID列に最初の空き値を設定するため、ColumnWithIdentity
のSELECT
部分にINSERT
フィールドを追加しないでください。