私は2台のサーバーを持っています。
パブリッシャー(サーバーA)にマージレプリケーションをインストールし、同じデータベース名で2つのサブスクリプションを追加しました。
-1つはパブリッシャー自体に、もう1つはサブスクライバー(サーバーB)にあります。これまでのところ良好です。レプリケーションは正常に機能しています。パブリッシャー(サーバーA)のサブスクライブされたデータベースを削除し、サーバーBからサブスクライブされたデータベースのコピーに置き換え
たいと思いました。パブリッシャーは新しく接続されたデータベースで同期を継続すると思いましたが、残念ながら、期待どおりに機能しませんでした。 、代わりにスナップショットなどの適用を開始しました。
コピーされたデータベースを変更して、発行者がそれを削除されたデータベースとして再認識し、同期を続行できるようにするものはありますか?
1 に答える
データベースをパブリッシャーとして構成するすべてのメタデータは、データベース自体に格納されます。したがって、データベースを削除すると、パブリケーションも削除されます。以前はサブスクリプションであったデータベースを移動してパブリッシャーにするには、最初から始めるのと同じ方法で、データベースを初期化し、パブリッシャーとして構成する必要があります。
ただし、実行しようとしていることを模倣できるトリックがいくつかあります。つまり、サブスクリプションをバックアップします。次に、パブリッシャーからすべてのデータを削除して同期します。パブリケーションを削除しないでください。データベース内のデータのみを削除してください。同期により、削除がサブスクライバーにもマージされますが、それがバックアップがある理由です。
その時点で、サブスクライバーに戻したサブスクリプションバックアップを復元します。「レプリケーション情報を保持する」が設定されていることを確認します。同期を再度復元したら。その結果、サブスクリプションバックアップの元のデータが、復元前に空だったパブリッシャーにマージして戻す唯一のデータになるはずです。
私は実際に個人的に試したことはありませんが、理論的にはうまくいくはずです。マージレプリケーションスキームのバックアップと復元の詳細については、こちらをお読みください。