データの同期

適用対象: SQL ServerAzure SQL Managed Instance

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

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

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

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

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

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

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

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

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

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

プッシュ サブスクリプションを同期するには、「Synchronize a Push Subscription」 (プッシュ サブスクリプションの同期) を参照してください。

プル サブスクリプションを同期するには、「Synchronize a Pull Subscription」 (プル サブスクリプションの同期) を参照してください。

同期のスケジュールを設定するには、「 Specify Synchronization Schedules」を参照してください。

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

同期中のコード実行

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

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

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

参照

マージ レプリケーションの競合の検出と解決