データの同期とは、初期スナップショットがサブスクライバーで適用された後にパブリッシャーとサブスクライバーの間で伝達されるデータとスキーマの変更のプロセスを指します。 同期は次の場合に発生する可能性があります。
トランザクション レプリケーションでは、連続的であることが一般的です。
マージ レプリケーションにおいて、必要に応じて行われることが一般的です。
スケジュールに従います。これは、スナップショット レプリケーションに一般的です。
サブスクリプションが同期されると、使用しているレプリケーションの種類に基づいて異なるプロセスが発生します。
スナップショット レプリケーション。 同期とは、ディストリビューション エージェントがサブスクライバー側のスナップショットを再適用して、サブスクリプション データベースのスキーマとデータがパブリケーション データベースと一致するようにすることを意味します。
パブリッシャーでデータまたはスキーマに変更が加えられた場合は、サブスクライバーに変更を反映するために新しいスナップショットを生成する必要があります。
トランザクション レプリケーション。 同期とは、ディストリビューション エージェントがディストリビューション データベースからサブスクライバーに更新、挿入、削除、およびその他の変更を転送することを意味します。
マージ レプリケーション。 同期とは、マージ エージェントがサブスクライバーからパブリッシャーに変更をアップロードし、パブリッシャーからサブスクライバーに変更をダウンロードすることを意味します。 競合 (存在する場合) が検出され、解決されます。 データは収束し、パブリッシャーとすべてのサブスクライバーが最終的に同じデータ値を持ちます。 競合が検出されて解決された場合、一部のユーザーによってコミットされた作業は、定義したポリシーに従って競合を解決するように変更されます。
スナップショット パブリケーションでは、同期が行われるたびにサブスクライバーのスキーマが完全に更新されるため、すべてのスキーマ変更がサブスクライバーに適用されます。 トランザクション レプリケーションとマージ レプリケーションでは、最も一般的なスキーマ変更もサポートされます。 詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。
プッシュ サブスクリプションを同期するには、「 プッシュ サブスクリプションの同期」を参照してください。
プル サブスクリプションを同期するには、「 プル サブスクリプションの同期」を参照してください。
同期スケジュールを設定するには、「 同期スケジュールの指定」を参照してください。
同期の競合を表示して解決するには
SQL Server Management Studio: マージ パブリケーションのデータ競合の表示と解決 (SQL Server Management Studio)
SQL Server Management Studio: トランザクション パブリケーションのデータ競合の表示 (SQL Server Management Studio)
同期中のコードの実行
レプリケーションでは、同期中にコードを実行する 2 つの方法がサポートされます
トランザクション レプリケーションとマージ レプリケーションでは、オンデマンド スクリプトの実行がサポートされます。 オンデマンド スクリプトの実行を使用すると、同期中に実行する SQL スクリプトを指定できます。 スクリプトはサブスクライバーにコピーされ、同期プロセスの開始時に sqlcmd を使用して実行されます。 スクリプトはサブスクライバーに適用されるため、レプリケートされた変更にはアクセスできません。 詳細については、「 同期中のスクリプトの実行 (レプリケーション Transact-SQL プログラミング)」を参照してください。
マージ レプリケーションでは、ビジネス ロジック ハンドラーがサポートされています。 ビジネス ロジック ハンドラー フレームワークを使用すると、マージ同期プロセス中に呼び出されるマネージド コード アセンブリを記述できます。 アセンブリには、データの変更、競合、エラーなど、同期中にさまざまな条件に対応できるビジネス ロジックが含まれています。 詳細については、「 マージ同期中のビジネス ロジックの実行」を参照してください。