1 つのパブリッシャー、複数のパブリケーション、および複数のサブスクリプションを含むマージ レプリケーション トポロジがあります。少なくとも 8 か月間は問題なく動作しています。
数日前、私の PO コードが理由もなく標準の「ZWWTP/PO-0092」スタイルから新しい「ZWWT」スタイルに「変更」されていると知らされました。PO コードの文字 5 から 8 が次のように変更されました。別の文字列は、一部のサーバーでは chr(0) & chr(1) & chr(0) & chr(1) です
レプリケーション/サブスクリプション プロセスの 1 つだけがそのようなダミー データを生成しているように見える点に到達しました。パブリッシャーの PO コードとこの特定のサブスクライバーは、最近更新または追加されたレコードと一致しなくなりました。サブスクライバー側で作成された PO のコードは、パブリッシャーにアップロードされると変更されます (サブスクライバー側ではクリーンなままです)。パブリッシャーからダウンロードされた PO は、変更された PO コードでサブスクライバーに反映されます。
その後、いくつかのテーブル比較ユーティリティといくつかの UPDATE ステートメントを使用して、両方のサーバーのデータをクリーンアップ/調整することができましたが、2 つのサーバー間でレプリケーションが実行されるたびに、まったく同じ不一致が表示されるようになりました。レプリケーションが正常に実行された後、非収束状態に戻ります: 同じレコード、同じ値!
私は、データの収束と複製に関して、利用可能なリソースの多くをネット上に残したとは思いません。何も見つかりませんでした。私は 3 時間以内に既存の出版物/購読を破棄/再構築することを計画していますが、精神分析の問題に発展する前に、私の問題に対する合理的な答えをまだ探しています。
何が起こっているのか誰にもわかりませんか?
PS: ちなみに、PO コードは自然キーとして使用されないため、このレプリケーションの問題はデータベースの整合性には影響しません。ほとんどの場合に機能する自然キーに反して常に機能する代理キーを支持するもう1つの議論ですが、これは別の場所で議論されています...
編集:まあ、私はそれをやったが、うまくいかなかった! サブスクリプションとパブリケーションの両方をスローし、パブリケーションを再作成しましたが、スナップショットを生成できませんでした。サーバーは、「パブリッシャーの ID 範囲割り当てエントリ」と呼ばれるものを管理できませんでした。これは「システム テーブルに見つかりませんでしたMSmerge_identity_range
。
ブラウジングした後、「出版物データベースで作成された最初の出版物をドロップした」ときにこのような問題が発生する可能性があるという 記事を見つけました</p>
なんて面白いんだ!これはまさに私がやったことです!
幸いなことに、この問題は SQLServer 2005 累積パック 5 で解決されるはずですが、ダウンロードしてインストールする必要があります。しかし、問題は次のとおりです。この CP5 がリリースされる前に、SQLServer 2005 ユーザーはどのように作業できたのでしょうか。
EDIT2: 累積パック 5 が機能せず、新しいレプリケーションのスナップショットをまだ作成できません!