1

SQL Server 2008R2 トランザクション レプリケーション - SubscriberDB の移動 - サブスクリプションのプッシュ

サブスクライバー データベースをシステム停止の外部にある新しいサーバーに移動する必要があります。つまり、新しいトランザクションがパブリッシャー データベースにロードされるのを止めることができません。

これまでのところ、ディストリビューション エージェントを停止して、レプリケートされていないすべてのコマンドを Server1 のサブスクライバ データベースにレプリケートしようとしました。次に、加入者データベースを Server2 にバックアップおよび復元します。次に、Server2 から既存のパブリケーションへの新しいサブスクリプションを作成しました。

これは機能しますが、その時点以降に作成されたトランザクションのみが Server2 サブスクライバー データベースに複製されます。また、ディストリビュータ データベースで構築されたすべての古いトランザクションが Server1 のみに送信されるようにする必要があります。

ディストリビューターの既存のトランザクションの宛先を新しいsubscriber.subscriber_DBに更新するために使用できるレプリケーション コマンドはありますか?

複数の記事を含む 1 つの出版物があります。パブリケーションは現在、Server1 の 1 つのデータベースによってのみサブスクライブされています。

4

2 に答える 2

2

あなたは働きすぎです。既存のサブスクリプションがまったくないかのように、新しいサーバーでサブスクリプションを作成します。これを行うには多くの方法があります。お気に入りを選んでください。別の回答に対するあなたの回答で、スナップショットはダメだということがわかりました。「バックアップから初期化」オプションを使用して多くの成功を収めました (ここで、「バックアップ」は発行元のバックアップを指します)。初期化後にサブスクライバーが同期されたら、完了です。これで、新しいサーバーに「移行」することが明確になりました。

于 2012-05-29T19:22:41.193 に答える
0

ディストリビューション エージェントは各サブスクライブ サーバーに固有であるため、既存のサブスクライバーが中断した場所を新しいサブスクライバーに引き継がせることはできません。これが機能する唯一の方法は、Server2 にバックアップ/復元し、パブリッシャでトランザクションを一時的に停止し、Server2 にログをバックアップ/復元し、「レプリケーション サポートのみ」でサブスクリプションを作成してから、トランザクションを再度有効にすることです。

新しいサブスクライバーの同じパブリケーションにサブスクリプションを追加して、スナップショット エージェントを開始することはできませんか? これにより、Server1 が引き続き同期している間、Server2 が個別に同期されます。その後、Server2 にシームレスに切り替えて、Server1 へのサブスクリプションを削除できるはずです。

ただし、注意事項が 1 つあります。パブリケーション データベースの syspublications テーブルの sync_method をチェック (または sp_helppublications を実行) して、スナップショットがパブリッシャーのテーブルをロックしないことを確認します (SQL Server 2005 以降では既定で、これは問題になりません)。そうしないと、スナップショットが完了するまでパブリッシャーでブロックが発生する可能性があります。

また、これは、デフォルト設定を使用して GUI からレプリケーションをセットアップする場合に、一度に 1 つずつスナップショットを作成する方法を理解するための良い参考資料です。これは、レプリケートするデータが大量 (メガバイトではなくギガバイト) ある場合に、パブリッシャー サーバーの負荷を軽減するために、長期間にわたってスナップショットを配布するのに役立ちます。 http://www.replicationanswers.com/TransactionalOptimisation.asp

于 2012-05-29T17:33:45.320 に答える