0

SQL Server 2008 SP 2 を使用しており、6 つのサイト間でレプリケーションが行われています

問題は:

金額の値を列 (例: 500$) に保存します。これは 2 つのサイトで同時に変更される可能性があり、その時点でレプリケーションがダウンしている場合、両方のサイトに 2 つの異なる値があり、最近使用した場合勝者として更新またはパブリッシャーが間違った金額値を取得します

2 つの値をマージする複製戦略はありますか?

4

1 に答える 1

0

あなたの質問には奇妙なことがあります。トランザクションデータベースでトランザクションレプリケーション(ここを参照)を使用する場合、これは発生しません。

問題は、データベースが正しく設計されていないことです。増分(トランザクション)を保存せずに、「増分」変更をフィールドに入れることを許可しています。実際に何が起こっているのかを説明していないため、質問は少しあいまいです。最新の値では不十分なのはなぜですか?

データベースの変更をトランザクションとして保存する必要があります。

  • 開始値:$ 500
  • トランザクション1:$100を追加
  • トランザクション2:$200を引く

絶対値としてではなく:

  • 開始値:$ 500
  • トランザクション1:値を$600に変更します
  • トランザクション2:値を$400に変更します

最初のケースでは、どちらの順序でもトランザクションを適用して追いつくことができます。2番目のケースでは、そのうちの1つだけを適用することになります。

残高などの要約値は、おそらくトリガーまたはストアドプロシージャを使用して、トランザクションから導出する必要があります。

于 2013-02-10T17:09:30.720 に答える