SQL Server 2005 の双方向レプリケーションに関連する問題を紹介したいと思います。私が必要なものは何?私のチームリーダーは、それぞれが異なるアプリケーションで使用される 2 つのデータベース間の双方向レプリケーションを使用して、私たちの問題の 1 つを解決したいと考えています。1 つのアプリケーションがテーブル A にレコードを作成し、その変更を 2 番目のデータベースにレプリケートしてテーブル A のコピーにする必要があります。SQL Server 2005 を実行している 1 つのサーバー上の 2 つのデータベース間で双方向のトランザクション レプリケーションを実現しようとしています。スクリプトを使用してこれをセットアップし、2 つのパブリケーションとループバック検出付きの 2 つの読み取り専用サブスクリプションを確立しました。ディストリビューション データベースが作成され、両方のデータベースでの発行が有効になります。ディストリビューターとパブリッシャーが稼働しています。レプリケートされるレコードを制御するためにいくつかのルールを使用しているため、レプリケーション中にカスタム ストアド プロシージャを呼び出す必要があります。そのため、アーティクルはカスタム ストアド プロシージャの更新、挿入、および削除を使用するように設定されています。
ここまではいいけど?
更新が両方のテーブルで同時に行われるまで、または変更がレプリケートされる前に (約 3 ~ 6 秒かかります)、すべてが正常に機能し、変更がレプリケートされます。その後、両方のレコードが異なる値になります。
UPDATE db1.dbo.TestTable SET Col = 4 WHERE ID = 1
UPDATE db2.dbo.TestTable SET Col = 5 WHERE ID = 1
結果:
db1.dbo.TestTable COL = 5
db2.dbo.TestTable COL = 4
しかし、最後の変更がレプリケーションを優先するようにしたいと考えています。私の問題を解決する方法はありますか?両方のレコードで同じ値を確保するにはどうすればよいですか? または、この種の複製よりも簡単な解決策はありますか?
私が使用しているサンプル レプリケーション スクリプトを提供できます。
ミレク
、あなたのアイデアを楽しみにしています