私はVB.NETで作業しています。私は3つのフィールドを含む "質問"と呼ばれるDataTableを持っています:
私のSQL Serverデータベースでは、同じフィールドを持つ "QUESTION"というテーブルを作成しました。 QuestionNumberは整数ユニークキー、自動インクリメント
今、私は、SQL ServerにDataTableを挿入する一括コピーを作成すると、データベースは、DataTableから私のQuestionNumberを上書きし、(1増分1から始まる)新しいものを生成します。
元のQuestionNumbersがデータベースにコピーされるように、データベースの設定を変更する必要がありますか?
tryを挿入するだけのとき:
SET IDENTITY_INSERT [your table] ON
INSERT INTO [your table] (identityCol, col1,...) VALUES (identityCol, col1,...)
SET IDENTITY_INSERT [your table] OFF
コマンドで特別なパラメータ/スイッチ/ヒントを追加する必要があるデータを一括コピーする場合は、ここで詳しく説明します。
IDENTITY INSERTを参照してください。あなたはそれをオンにする。テーブルを更新して、テーブルを元に戻します。
SET IDENTITY_INSERT table ON
一度に1つのテーブルに対してのみ使用できることに注意してください。別のテーブルでそれをオンにすると、最後のテーブルではオフになります。
既存の最大値よりも大きい値を挿入すると、その値に再シードされ、新しい値がすべて大きくなります。
ここでも、電源を切ることを忘れないでください:
SET IDENTITY_INSERT table OFF
文字通りBULK INSERTを行っている場合は、KEEPIDENTITY修飾子を忘れないようにしてください。これは、サーバーにID値を無視しないように指示します。そうでなければ、識別値を無視してID列の新しい値を生成します。