現在のデータベースの「スナップショット」を取得し、新しい主キーを使用して同じデータベースに複製する必要があります。
問題のスキーマは約 10 個のテーブルで構成されていますが、一部のテーブルには、複製が必要な数十万から 100 万のレコードが含まれる可能性があります。
ここでのオプションは何ですか?
残念ながら、SPROC を作成するには、操作の全期間にわたって問題のデータベース行を (同時実行のために) ロックする必要があり、これは他のユーザーにとって非常に迷惑です。sqlserver が許可する最大限の範囲で最適化できると仮定すると、そのような操作にはどれくらいの時間がかかりますか? これだけ挿入するのに 30 秒から 1 分かかりますか? 同じテーブルを個別に使用している他のアカウントの下に他のユーザーがいるため、テーブル全体をロックして一括挿入を行うことができません。
期待されるパフォーマンスに応じて、現在のデータベースを xml ファイルにダンプし、バックグラウンドで暇なときにこの xml ファイルからデータベースを非同期的に複製することもできます。これの明らかな利点は、db が xml ダンプの実行にかかる時間だけロックされ、挿入をバックグラウンドで実行できることです。
優れた DBA が「複製」操作を最初から最後まで 10 秒以内に実行できる場合、xmldump/webservice ソリューションの複雑さに見合う価値はないでしょう。しかし、それが失われた原因であり、数百万行を挿入する可能性があり、時間内に膨れ上がる可能性がある場合は、xml アプローチからすぐに開始したいと思います。
それとも、完全に優れたアプローチがあるのでしょうか??
あなたが提供できる洞察に感謝します。