0

あるデータベースから別のデータベースにデータをインポートするための Web ベースのインポーターを作成しています。ID を持つテーブルにデータが読み込まれるため、insert ステートメントを実行する前に Identity_Inserts を有効にする必要があります。リストに実行する必要がある SQL ステートメントを生成します。やりたいことは、コマンドをループする前に IDENTITY_INSERT を ON に設定し、完了したら元に戻すように設定することです。どのコマンドが失敗したかを追跡したいので、各コマンドを 1 つずつ実行します。

ループを開始する前に SET IDENTITY_INSERT [TABLE NAME] ON を実行しようとしましたが、これは機能しません。

私がやろうとしていることをどのように達成できますか、または他のアイデアを持っている人はいますか?

4

2 に答える 2

0

https://connect.microsoft.com/SQLServer/feedback/details/517923/set-identity-insert-already-on-error-message-always-returns-dbo-schema-nameから取得

SQL 2k8 BOLは、「いつでも、セッション内の1つのテーブルのみがIDENTITY_INSERTプロパティをONに設定できます。テーブルでこのプロパティがすでにONに設定されていて、SET IDENTITY_INSERT ONステートメントが別のテーブルに対して発行された場合、SQLServerは次のように返します。 SET IDENTITY_INSERTがすでにオンになっていて、オンに設定されているテーブルを報告するというエラーメッセージが表示されます。」

ループの最後でオフに設定する必要があると思いますか?

于 2012-03-22T08:50:50.413 に答える
0

オプションを実行するには、昇格された権限が必要ですSET IDENTITY_INSERT。ユーザーが次のいずれかを満たしているかどうかを確認してください。ユーザーは
オブジェクトを所有しているか、sysadmin固定サーバーの役割、または固定データベースの役割のメンバーである必要がdb_ownerありdb_ddladminます。

于 2012-02-09T23:54:47.167 に答える