SQL Server 2000データベースのテーブル(テーブル1)に多数の変更をポストするアプリケーションがあります。次に、テーブルの一意のキーを含む一括更新.Netアプリケーションを使用したSQL Server 2008データベースの更新 - 最も実績のあるメソッド
各挿入/更新/火災をそのテーブル上のトリガを削除し、別のテーブル(表2)に変更の詳細をポスト、1
は、特定の間隔で。ネットアプリケーションは、テーブル2をポーリングして、SQL Server 2008データベース - テーブル3のテーブル1と同一のテーブルに転送する必要のある更新があるかどうかを確認します。 ルーチンは変更の「上位10000」行を取り出して適用します個別にテーブル3に移動し、残りがなくなるまでプロセスを繰り返す。各10,000は、データの転送が完了したことを示す表2の一括更新を含む、処理に約1分かかる。
テーブル3の各更新は一意のキーを使用して実行され、テーブルのインデックスは健全です。
テーブル3の更新が完了すると、テーブル2が更新され、トランザクションがSQL Server 2008データベースに適用されたことが示されます。
表1は40,000回の更新でヒットすることがありますが、これらはうまくいくようですが、レコードが更新されるとSQl Server 2008データベースが壊れます。
テーブル3に更新を投稿する最も効果的な方法は何ですか?
私はサービスブローカーが仕事をするかもしれませんが、.NetアプリケーションでXMLメッセージを作成し、それをサービスブローカーのキューに入れて適用する方法 - とにかく同じ問題を引き起こさない - 別のプロセスによって実行された同じジョブ。
SQLジョブでレプリケーションを検討したことがありますか? –
Paul、私はT-SQLを使ってこの仕事を始めたのは初めてのときでした。私はSQL 2000とSQL 2008の両方のデータベースを使用していたので、仕事を受け入れられるものは何も見つからなかった。私はオープンクエリーについて考えましたが、それはどちらかの仕事をしていないようでした。あなたが知っていることを知っているなら、私はすべての耳です! –
あなたはおそらく私が提案できるすべてを試したことがありますが、時にはSQLの答えが開発者には必ずしも分かりません。可能であれば、私はサーバーをリンクし、SQL 2008サーバーのすべての重大な作業をやろうとしましたが、もう一度、おそらくそれを過度に単純化しています。 –