データの同期

データの同期とは、初期スナップショットをサブスクライバで適用した後に、パブリッシャとサブスクライバの間でデータとスキーマ変更を反映する処理のことです。同期は、次のように実行されます。

  • 連続して実行。これは通常、トランザクション レプリケーションの場合です。

  • 要求時に実行。これは通常、マージ レプリケーションの場合です。

  • スケジュールに基づいて実行。これは通常、スナップショット レプリケーションの場合です。

サブスクリプションが同期されると、使用しているレプリケーションの種類に基づいて異なる処理が実行されます。

  • スナップショット レプリケーション。同期とは、ディストリビューション エージェントがサブスクライバでスナップショットを再適用して、サブスクリプション データベースのスキーマおよびデータがパブリケーション データベースとの一貫性を持つようにすることを意味します。

    データまたはスキーマへの変更がパブリッシャで行われている場合、サブスクライバに変更を反映させるために、新しいスナップショットを生成する必要があります。

  • トランザクション レプリケーション。同期とは、ディストリビューション エージェントが更新、挿入、削除、およびその他の変更をディストリビューション データベースからサブスクライバに転送することを意味します。

  • マージ レプリケーション。同期とは、マージ エージェントがサブスクライバからパブリッシャに変更をアップロードし、パブリッシャからサブスクライバに変更をダウンロードすることを意味します。競合が存在する場合は、検出されて解決されます。データは集約され、最終的にパブリッシャとすべてのサブスクライバでデータ値が同じになります。競合が検出されて解決された場合、一部のユーザーがコミットした作業は、定義されたポリシーに応じて、競合が解決するように変更されます。

スナップショット パブリケーションでは、同期が発生するたびに、サブスクライバでスキーマが完全に更新されます。そのため、すべてのスキーマ変更がサブスクライバに適用されます。トランザクション レプリケーションとマージ レプリケーションでも、最も一般的なスキーマ変更がサポートされます。詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。

プッシュ サブスクリプションを同期するには

プル サブスクリプションを同期するには

同期のスケジュールを設定するには

同期の競合を表示および解決するには

同期中のコード実行

レプリケーションでは、同期中にコードを実行する方法が 2 つサポートされています。

  • 要求時スクリプト実行は、トランザクション レプリケーションおよびマージ レプリケーションでサポートされています。要求時スクリプト実行を使用すると、同期中に実行する SQL スクリプトを指定できます。スクリプトはサブスクライバにコピーされ、同期処理の開始時に sqlcmd を使用して実行されます。スクリプトは、レプリケートされた変更をサブスクライバに適用するときに、それらの変更へはアクセスしません。詳細については、「同期中にスクリプトを実行する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

  • ビジネス ロジック ハンドラは、マージ レプリケーションでサポートされています。ビジネス ロジック ハンドラ フレームワークを使用すると、マネージ コードのアセンブリを記述して、マージ同期処理中に呼び出すことができます。このアセンブリには、データの変更、競合、およびエラーなど、同期中に発生するさまざまな状況に対処するためのビジネス ロジックを記述できます。詳細については、「マージ同期中のビジネス ロジックの実行」を参照してください。