サブスクリプションを再初期化する方法 (レプリケーション Transact-SQL プログラミング)

次回の同期で新しいスナップショットが適用されるように、個別のサブスクリプションに再初期化のマークを付けることができます。サブスクリプションは、プログラムでレプリケーション ストアド プロシージャを使用して再初期化できます。使用するストアド プロシージャは、サブスクリプションの種類 (プッシュまたはプル) およびサブスクリプションが属しているパブリケーションの種類によって変わります。

トランザクション パブリケーションに対するプル サブスクリプションを再初期化するには

  1. サブスクライバ側のサブスクリプション データベースに対して、sp_reinitpullsubscription (Transact-SQL) を実行します。@publisher@publisher_db、および @publication を指定します。これにより、ディストリビューション エージェントの次回実行時に再初期化するようにサブスクリプションにマークが付けられます。

  2. (省略可) サブスクライバでディストリビューション エージェントを起動し、サブスクリプションを同期します。詳細については、「プル サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

トランザクション パブリケーションに対するプッシュ サブスクリプションを再初期化するには

  1. パブリッシャで、sp_reinitsubscription (Transact-SQL) を実行します。@publication@subscriber、および @destination_db を指定します。これにより、ディストリビューション エージェントの次回実行時に再初期化するようにサブスクリプションにマークが付けられます。

  2. (省略可) ディストリビュータでディストリビューション エージェントを起動し、サブスクリプションを同期します。詳細については、「プッシュ サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

マージ パブリケーションに対するプル サブスクリプションを再初期化するには

  1. サブスクライバ側のサブスクリプション データベースに対して、sp_reinitmergepullsubscription (Transact-SQL) を実行します。@publisher@publisher_db、および @publication を指定します。再初期化が実行される前にサブスクライバの変更をアップロードする場合は、@upload_first に true を指定します。これにより、マージ エージェントの次回実行時に再初期化するようにサブスクリプションにマークが付けられます。

    重要な注意事項重要

    パラメータ化されたフィルタを追加、削除、または変更した場合、再初期化中にサブスクライバの保留中の変更はパブリッシャにアップロードできません。保留中の変更をアップロードする場合は、フィルタを変更する前にすべてのサブスクリプションを同期します。

  2. (省略可) サブスクライバでマージ エージェントを起動し、サブスクリプションを同期します。詳細については、「プル サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

マージ パブリケーションに対するプッシュ サブスクリプションを再初期化するには

  1. パブリッシャで、sp_reinitmergesubscription (Transact-SQL) を実行します。@publication@subscriber、および @subscriber_db を指定します。再初期化が実行される前にサブスクライバの変更をアップロードする場合は、@upload_first に true を指定します。これにより、ディストリビューション エージェントの次回実行時に再初期化するようにサブスクリプションにマークが付けられます。

    重要な注意事項重要

    パラメータ化されたフィルタを追加、削除、または変更した場合、再初期化中にサブスクライバの保留中の変更はパブリッシャにアップロードできません。保留中の変更をアップロードする場合は、フィルタを変更する前にすべてのサブスクリプションを同期します。

  2. (省略可) ディストリビュータでマージ エージェントを起動し、サブスクリプションを同期します。詳細については、「プッシュ サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

新しいマージ パブリケーションを作成するときに再初期化ポリシーを設定するには

  • パブリッシャ側のパブリケーション データベースで、sp_addmergepublication を実行し、次のいずれかの値を @automatic_reinitialization_policy に指定します。

    • 1 - パブリケーションに対する変更に応じてサブスクリプションが自動的に再初期化される前に、サブスクライバの変更がアップロードされます。

    • 0 - パブリケーションに対する変更に応じてサブスクリプションが自動的に再初期化されるときに、サブスクライバの変更は破棄されます。

    重要な注意事項重要

    パラメータ化されたフィルタを追加、削除、または変更した場合、再初期化中にサブスクライバの保留中の変更はパブリッシャにアップロードできません。保留中の変更をアップロードする場合は、フィルタを変更する前にすべてのサブスクリプションを同期します。

    詳細については、「パブリケーションを作成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

既存のマージ パブリケーションの再初期化ポリシーを変更するには

  • パブリッシャ側のパブリケーション データベースに対して sp_changemergepublication を実行します。@propertyautomatic_reinitialization_policy を指定し、次のいずれかの値を @value に指定します。

    • 1 - パブリケーションに対する変更に応じてサブスクリプションが自動的に再初期化される前に、サブスクライバの変更がアップロードされます。

    • 0 - パブリケーションに対する変更に応じてサブスクリプションが自動的に再初期化されるときに、サブスクライバの変更は破棄されます。

    重要な注意事項重要

    パラメータ化されたフィルタを追加、削除、または変更した場合、再初期化中にサブスクライバの保留中の変更はパブリッシャにアップロードできません。保留中の変更をアップロードする場合は、フィルタを変更する前にすべてのサブスクリプションを同期します。

    詳細については、「パブリケーションのプロパティを表示および変更する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。