1
SET IDENTITY_INSERT [Table] ON
はSQLスクリプトの範囲を超えて存続しますか?明示的に "OFF"に設定する必要があるのか、SQL Serverが現在のスクリプトに対してのみその設定を使用するべきかを知っているかどうかは疑問です。"ON"にした後に明示的に "SET IDENTITY_INSERT [Table] OFF"する必要がありますか?
ありがとうございます!
SET IDENTITY_INSERT [Table] ON
はSQLスクリプトの範囲を超えて存続しますか?明示的に "OFF"に設定する必要があるのか、SQL Serverが現在のスクリプトに対してのみその設定を使用するべきかを知っているかどうかは疑問です。"ON"にした後に明示的に "SET IDENTITY_INSERT [Table] OFF"する必要がありますか?
ありがとうございます!
はい、現在のバッチを超えて存続します。
ただし、実行中のセッションを直ちに切断すると、変更する必要はありません。
これは、セッションごとに1つのテーブルにつき1つのテーブルに対してのみオンになり、以下のコメントでAaronによって指摘されているように、セッションごとに複数のテーブルに対して設定しようとするとエラーになります。
Jeremy:現在のセッションと比較して、「現在のバッチ」とはどういう意味ですか? – shahkalpesh
は、セッション対バッチの差分とそれが次のテーブルにどのように遷移するかをアップリストにしました。 –
@Jeremy - あなたの最後のステートメントは正しくありません。 2番目のテーブルに対してIDENTITY_INSERTを設定しようとすると、エラーメッセージが表示されます。メッセージ8107、レベル16、状態1、行5 IDENTITY_INSERTは既に 'mydb.dbo.MyTable'テーブルに対してONです。テーブル 'MyOtherTable'に対してSET操作を実行できません。 –