0

私たちのチームは、SQL Server 2008 データベースに大量のデータを挿入する必要があります。私たちは良い解決策を探しています。今、私たちはそれを思いつきましたが、私はそれに疑問を持っています. それで、これが良い解決策のように思えるかどうかをここで尋ねています。追加の課題は、それが 4 つのサーバーを介してピアツーピアで複製されたデータベースであることです! :)

挿入する行が 100 万行あるとします。

  1. 取引開始
  2. 100 万のテーブルの現在の ident 値を増やします
  3. 100 万行と正しい ID を備えた DataSet/DataTable を用意する
  4. データをデータベースに一括コピーする
  5. トランザクションをコミットする

これは良い解決策でしょうか。同時実行の問題が発生したり、トランザクションが大きすぎたりする可能性があります。

4

1 に答える 1

0

データベースがオンラインで、ユーザーがそのテーブルに行を挿入できる場合にのみ、問題が発生します (私が見る限り、見落としがあるかもしれません!)。メタ レベルで新しい行の ID 値を増やすということは、システムによって挿入される次の行がその番号を使用することを意味するだけです。

ID 列は「便利」ですが、譲渡できないという副作用があります。したがって、データを別の DB に移行する必要がある場合は、挿入するデータベースに合わせて挿入するデータを調整する必要がある可能性が高いことに注意してください (これはデータの範囲であるため、ID フィールドがテーブル内の既存の行と衝突する可能性があるため) )。

これが1回限りの出来事であれば、うまくいくかもしれません。これを定期的に行うことを計画している場合は、データを新しい ID 値に移行するか、NEWSEQUENTIALID() で GUID を使用して、適切なチェック済みインデックスと一意の転送可能な ID を取得する、より高レベルの移行システムを検討します。 .

于 2010-04-22T12:55:40.530 に答える