適用対象:SQL Server
一般にマージ レプリケーションは、トランザクション レプリケーションと同様に、パブリケーションのデータベース オブジェクトとデータのスナップショットで開始されます。 その後にパブリッシャーとサブスクライバーで行われたデータおよびスキーマの変更は、トリガーを使って追跡されます。 サブスクライバーは、ネットワークに接続されたときにパブリッシャーと同期して、前回の同期以降にパブリッシャーとサブスクライバーの間で変更されたすべての行を交換します。
マージ レプリケーションは、一般にサーバー対クライアント環境で使用されます。 マージ レプリケーションは、以下の状況に適しています。
複数のサブスクライバーで別々の時刻に同じデータを更新し、それらの変更をパブリッシャーや他のサブスクライバーに反映する場合がある。
サブスクライバーで、データを受信し、オフラインで変更を行い、後でパブリッシャーおよび他のサブスクライバーと変更を同期する必要がある。
各サブスクライバーが、データの別々の部分を必要とする。
競合が発生する可能性があり、発生した場合にはそれを検出して解決できる必要がある。
アプリケーションで、中間状態のデータにアクセスするのではなく、最終的な変更結果が必要である。 たとえば、サブスクライバーでパブリッシャーと同期する前に行が 5 回変更された場合、最終的な変更結果 (つまり、5 回目の値) を反映させるために、パブリッシャーでは 1 回だけ変更されます。
マージ レプリケーションでは、さまざまなサイトが自律的に動作し、更新内容が後で 1 つにマージされます。 更新は複数のノードで行われるため、パブリッシャーと複数のサブスクライバーによって同じデータが更新されている可能性があります。 そのため、更新プログラムがマージされ、マージ レプリケーションで競合を処理するいくつかの方法が提供される場合、競合が発生する可能性があります。
マージ レプリケーションは、SQL Server スナップショット エージェントおよびマージ エージェントによって実装されます。 パブリケーションがフィルター選択されていない場合や静的フィルターを使用している場合、スナップショット エージェントでは 1 つのスナップショットが作成されます。 パブリケーションがパラメーター化されたフィルターを使用している場合、スナップショット エージェントではデータのパーティションごとに 1 つのスナップショットが作成されます。 マージ エージェントは、初期スナップショットをサブスクライバーに適用します。 また、初期スナップショットの作成後にパブリッシャーまたはサブスクライバーで発生したデータの増分変更がマージされ、ユーザーが構成したルールに従って競合を検出し、解決します。
変更を追跡するため、マージ レプリケーション (およびキュー更新サブスクリプションを使用したトランザクション レプリケーション) では、パブリッシュされたすべてのテーブルのすべての行を一意に識別できる必要があります。 このマージ レプリケーションを実行するには、テーブルに rowguid プロパティが設定されたデータ型 uniqueidentifier の列が既に存在しない限り、すべてのテーブルに列ROWGUIDCOLが追加されます (この場合、この列が使用されます)。 テーブルがパブリケーションから削除されると、 rowguid 列が削除されます。既存の列が追跡に使用されている場合、その列は削除されません。 フィルターには、レプリケーションで行の識別に使用される rowguidcol を含めることはできません。
newid() 関数は、rowguid列の既定値として提供されますが、必要に応じて各行に guid を指定できます。 ただし、値 00000000-0000-0000-0000-000000000000は指定しないでください。
次の図は、マージ レプリケーションで使用されるコンポーネントを示しています。
TLS 1.3 暗号化を構成する
SQL Server 2025 (17.x) では、マージ レプリケーションに 対する TDS 8.0 のサポートが導入されています。これには次のものが含まれます。
- SQL Server 2025 ( 17.x ) のインスタンス間、および SQL Server 2025 (17.x) と Azure SQL Managed Instance の間で TLS 1.3 暗号化を使用するようにレプリケーション エージェントを構成する。
- レプリケーション トポロジ内での SQL Server 2025 (17.x) インスタンス間リンク サーバー通信における既定の暗号化。 SQL Server 2025 (17.x) のリンク サーバーでは、OLE DB v19 ドライバーが使用され、既定で
Encrypt=Mandatory暗号化を行います。
注
リモート ディストリビューターを使用するレプリケーション トポロジの場合: