既存のキーを持つDataTableをSQL Serverテーブルに挿入する方法

database datatable sqlbulkcopy sql-server vb.net

質問

私はVB.NETで作業しています。私は3つのフィールドを含む "質問"と呼ばれるDataTableを持っています:

  • QuestionNumber(ユニーク整数キー)
  • QuestionText
  • 質問の種類

私の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

コマンドで特別なパラメータ/スイッチ/ヒントを追加する必要があるデータを一括コピーする場合は、ここで詳しく説明します。

一括インポート時のID値の保持


人気のある回答

IDENTITY INSERTを参照してください。あなたはそれをオンにする。テーブルを更新して、テーブルを元に戻します。

SET IDENTITY_INSERT table ON

一度に1つのテーブルに対してのみ使用できることに注意してください。別のテーブルでそれをオンにすると、最後のテーブルではオフになります。

既存の最大値よりも大きい値を挿入すると、その値に再シードされ、新しい値がすべて大きくなります。

ここでも、電源を切ることを忘れないでください:

SET IDENTITY_INSERT table OFF

文字通りBULK INSERTを行っている場合は、KEEPIDENTITY修飾子を忘れないようにしてください。これは、サーバーにID値を無視しないように指示します。そうでなければ、識別値を無視してID列の新しい値を生成します。

一括インポート時のID値の保持



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ