データの再パブリッシュ
適用対象: SQL Server Azure SQL Managed Instance
再パブリッシュ モデルでは、パブリッシャーがデータをサブスクライバーに送信し、このサブスクライバーがそのデータを任意の数の他のサブスクライバーに再パブリッシュします。 これは、パブリッシャーが、低速、またはコストが高い通信リンクを使用してサブスクライバーにデータを送信する必要がある場合に役立ちます。 多数のサブスクライバーがそのリンクの端末に接続されている場合には、リパブリッシャーの使用によりディストリビューションの負荷の大部分がそのリンク側に移ります。
データの再パブリッシュを行うには、以下の手順を実行します。
パブリッシャーでパブリケーションを作成します。
再パブリッシュ サブスクライバーのパブリケーションに対してサブスクリプションを作成します。
サブスクリプションを初期化します。 サブスクリプションは、再パブリッシュ サブスクライバーでパブリケーションが作成される前に、初期化する必要があります。この初期化を行わなかった場合、レプリケーションは失敗します。
再パブリッシュ サブスクライバーで、サブスクリプション データベース内にパブリケーションを作成します。
他のサブスクライバーへの再パブリッシュ サブスクライバーで、パブリケーションに対するサブスクリプションを作成します。
サブスクリプションを初期化します。
Note
再パブリッシュ トポロジでマージ レプリケーションを使用する場合、すべての再パブリッシュ サブスクライバーはサーバー サブスクリプションを使用する必要があります。 サブスクリプションの種類の詳細については、「パブリケーションのサブスクライブ」を参照してください。
以下の図では、パブリッシャーとリパブリッシャーの両方が、各自のローカル ディストリビューターとして動作します。 それぞれがリモート ディストリビューターを使用するように設定された場合は、各ディストリビューターは、低速またはコストが高い通信リンクの、それぞれのパブリッシャーと同じ側に置く必要があります。 パブリッシャーとリモート ディストリビューターは、信頼性の高い、高速通信リンクで接続する必要があります。
どのサーバーも、パブリッシャーとサブスクライバーの両方として動作できます。 たとえば、以下の図では、ロンドンにあるテーブルを、シカゴ、ニューヨーク、サンディエゴ、シアトルの 4 つの米国の都市に配信する必要がある場合のパブリケーションを示しています。 この場合は、ニューヨークのサイトが以下の条件を満たしているので、ロンドンでパブリッシュされたテーブルをニューヨークにあるサーバーがサブスクライブするように選択します。
ロンドンとのネットワーク リンクが比較的信頼できること。
ロンドンとニューヨークの通信コストが妥当であること。
ニューヨークと他の 3 つの米国のサブスクライバー サイトが適切なネットワーク通信回線で結ばれていること。
レプリケーションでは、次の表に示す再パブリッシュのシナリオがサポートされます。
発行元 | パブリッシュ元のサブスクライバー | サブスクライバー |
---|---|---|
トランザクション パブリケーション | トランザクション サブスクリプション/トランザクション パブリケーション | トランザクション サブスクリプション |
トランザクション パブリケーション | トランザクション サブスクリプション/マージ パブリケーション* | マージ サブスクリプション |
マージ パブリケーション | マージ サブスクリプション/マージ パブリケーション | マージ サブスクリプション |
マージ パブリケーション | マージ サブスクリプション/トランザクション パブリケーション | トランザクション サブスクリプション |
*マージ パブリケーションで @published_in_tran_pub
プロパティを設定する必要があります。 既定では、トランザクション レプリケーションにより、サブスクライバーでテーブルが読み取り専用として処理されることが予測されます。 マージ レプリケーションにより、トランザクション サブスクリプションのテーブルでデータの変更が行われる場合、データが集約できなくなる可能性があります。 このリスクを回避するため、マージ パブリケーションではこのようなテーブルをダウンロードのみとして指定することをお勧めします。 これはマージ サブスクライバーがテーブルにデータの変更をアップロードすることを防ぎます。 詳細については、「ダウンロード専用アーティクルを使用したマージ レプリケーションのパフォーマンス最適化」を参照してください。