1

SQLスクリプトから140万行のデータを挿入するという私の永遠 の物語では、スクリプトの各行を取得して個別に実行する基本的なWinFormsアプリを作成しました。

ただし、元のスクリプトに含まれているため

SET IDENTITY_INSERT [Table] OFF

SETはセッション全体のコマンドであり、この設定はすべてのSQL呼び出しで失われます。つまり、各行が失敗します。データベース全体でテーブル全体に対してIDENTITY_INSERTをオフに設定して、失敗することなくこれらの個別の呼び出しを実行できるようにする方法はありますか?または、各行にコマンドを追加することで、ID指定を無視するように指示できますか?

4

3 に答える 3

5

BULK INSERTが機能しませんか? または SQL Server インポート/エクスポート ウィザード (ここまたはここ)? インポート/エクスポートでは、インポート全体の ID 挿入をオフにできることを知っています。BULK INSERT の直前にできると確信しています。

于 2008-10-23T16:30:10.397 に答える
0

IDENTITY INSERTは、セッションごとに一度に1つのテーブルのみをオーバーライドできると思います。

一度に2つまたは300の挿入ステートメントをバッチ処理し、各バッチの前にident挿入を付ける必要があります。

そのため、アプリはこのようなブロックを実行します。

SET IDENTITY_INSERT [Table] OFF;
INSERT INTO TABLE VALUES (1, 'a');
INSERT INTO TABLE VALUES (2, 'b');
INSERT INTO TABLE VALUES (3, 'c');
INSERT INTO TABLE VALUES (4, 'd');
INSERT INTO TABLE VALUES (5, 'e');
SET IDENTITY_INSERT [Table] ON;
于 2008-10-23T16:46:38.147 に答える
0

これが140万の挿入ジョブが進行している間に、テーブルにアクセス/挿入するものは他にありますか?

そうでない場合は、ジョブの期間中、PK 列の ID を無効にできますか?

于 2008-10-23T17:47:28.103 に答える