データセットを使用して、古いデータベースから変換されたデータを挿入しています。要件は、現在の Order_ID 番号を維持することです。
私は使用してみました:
SET IDENTITY_INSERT orders ON;
これは、SqlServer Management Studio にいるときに機能します。正常に実行できます
INSERT INTO orders (order_Id, ...) VALUES ( 1, ...);
ただし、変換スクリプトで使用しているデータセット挿入を介してそれを行うことはできません。基本的には次のようになります。
dsOrders.Insert(oldorderId, ...);
プロセス中にもSQL(SET IDENTITY_INSERT orders ON)を実行しました。一度に 1 つのテーブルに対してしかこれを行うことができないことを知っています。
私はこの例外を受け取り続けます:
注文テーブルに値を挿入しようとしたときの例外 System.Data.SqlClient.SqlException: IDENTITY_INSERT が OFF に設定されている場合、テーブル 'orders' の ID 列に明示的な値を挿入できません。
何か案は?
アップデート
AlexS と AlexKuznetsov は、Set Identity_Insert は接続レベルの設定であると述べていますが、SqlProfiler で SQL を見ると、いくつかのコマンドがあることに気付きます。
- 初め -
SET IDENTITY_INSERT DEAL ON
- 2番 -
exec sp_reset_connection
- 3 番目から n - select と insert を含むさまざまな SQL コマンド
コマンドの間には常に がありexec sp_reset_connection
ますが、これが Identity_Insert 設定の値の損失の原因であると考えています。
データセットが接続をリセットするのを止める方法はありますか?