サブスクライバでデータを検証する方法 (レプリケーション Transact-SQL プログラミング)

レプリケーションでは、サブスクライバ側のデータが、パブリッシャ側のデータと一致しているかどうかを、レプリケーションのストアド プロシージャを使用してプログラムから検証できます。使用するプロシージャは、レプリケーション トポロジの種類によって異なります。

トランザクション パブリケーションのすべてのアーティクルについてデータを検証するには

  1. パブリッシャ側のパブリケーション データベースに対して、sp_publication_validation (Transact-SQL) を実行します。@publication を指定し、次のいずれかの値を @rowcount_only に指定します。

    • 1 - 行数チェックのみ (既定値)

    • 2 - 行数とバイナリ チェックサム

    注意

    sp_publication_validation (Transact-SQL) を実行すると、パブリケーション内の各アーティクルについて sp_article_validation (Transact-SQL) が実行されます。sp_publication_validation (Transact-SQL) を正常に実行するためには、パブリッシュされたベース テーブルのすべての列に対する SELECT 権限が必要です。

  2. (省略可) ディストリビューション エージェントがまだ実行されていない場合は、各サブスクリプションについてディストリビューション エージェントを開始します。詳細については、「プル サブスクリプションを同期する方法 (レプリケーション プログラミング)」および「プッシュ サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

  3. エージェントの出力で検証結果を確認します。詳細については、「レプリケートされたデータの検証」を参照してください。

トランザクション パブリケーションの単一のアーティクルについてデータを検証するには

  1. パブリッシャ側のパブリケーション データベースに対して、sp_article_validation (Transact-SQL) を実行します。@publication を指定し、@article にアーティクル名を、@rowcount_only に次のいずれかの値を指定します。

    • 1 - 行数チェックのみ (既定値)

    • 2 - 行数とバイナリ チェックサム

    注意

    sp_article_validation (Transact-SQL) を正常に実行するためには、パブリッシュされたベース テーブルのすべての列に対する SELECT 権限が必要です。

  2. (省略可) ディストリビューション エージェントがまだ実行されていない場合は、各サブスクリプションについてディストリビューション エージェントを開始します。詳細については、「プル サブスクリプションを同期する方法 (レプリケーション プログラミング)」および「プッシュ サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

  3. エージェントの出力で検証結果を確認します。詳細については、「レプリケートされたデータの検証」を参照してください。

トランザクション パブリケーションの単一のサブスクライバについてデータを検証するには

  1. パブリッシャのパブリケーション データベースで、BEGIN TRANSACTION (Transact-SQL) を使用して明示的なトランザクションを開始します。

  2. パブリッシャ側のパブリケーション データベースに対して、sp_marksubscriptionvalidation (Transact-SQL) を実行します。@publication にパブリケーションを、@subscriber にサブスクライバの名前を、@destination_db にサブスクリプション データベースの名前を指定します。

  3. (省略可) 検証の対象となる各サブスクリプションについて、手順 2. を繰り返します。

  4. パブリッシャ側のパブリケーション データベースに対して、sp_article_validation (Transact-SQL) を実行します。@publication を指定し、@article にアーティクル名を、@rowcount_only に次のいずれかの値を指定します。

    • 1 - 行数チェックのみ (既定値)

    • 2 - 行数とバイナリ チェックサム

    注意

    sp_article_validation (Transact-SQL) を正常に実行するためには、パブリッシュされたベース テーブルのすべての列に対する SELECT 権限が必要です。

  5. パブリッシャのパブリケーション データベースで、COMMIT TRANSACTION (Transact-SQL) を使用してトランザクションをコミットします。

  6. (省略可) 検証の対象となる各アーティクルについて、手順 1. から手順 5. を繰り返します。

  7. (省略可) ディストリビューション エージェントがまだ実行されていない場合は、開始します。詳細については、「プル サブスクリプションを同期する方法 (レプリケーション プログラミング)」および「プッシュ サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

  8. エージェントの出力で検証結果を確認します。詳細については、「サブスクライバでデータを検証する方法 (SQL Server Management Studio)」を参照してください。

マージ パブリケーションのすべてのサブスクリプションについてデータを検証するには

  1. パブリッシャ側のパブリケーション データベースに対して、sp_validatemergepublication (Transact-SQL) を実行します。@publication を指定し、次のいずれかの値を @level に指定します。

    • 1 - 行数の検証のみ

    • 3 - 行数とバイナリ チェックサムの検証

    これにより、すべてのサブスクリプションが検証対象としてマークされます。

  2. 各サブスクリプションのマージ エージェントを開始します。詳細については、「プル サブスクリプションを同期する方法 (レプリケーション プログラミング)」および「プッシュ サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

  3. エージェントの出力で検証結果を確認します。詳細については、「サブスクライバでデータを検証する方法 (SQL Server Management Studio)」を参照してください。

マージ パブリケーションの選択したサブスクリプションについてデータを検証するには

  1. パブリッシャ側のパブリケーション データベースに対して、sp_validatemergesubscription (Transact-SQL) を実行します。@publication を指定し、@subscriber にサブスクライバの名前を、@subscriber_db にサブスクリプション データベースの名前を、@level に次のいずれかの値を指定します。

    • 1 - 行数の検証のみ

    • 3 - 行数とバイナリ チェックサムの検証

    これにより、選択されたサブスクリプションが検証対象としてマークされます。

  2. 各サブスクリプションのマージ エージェントを開始します。詳細については、「プル サブスクリプションを同期する方法 (レプリケーション プログラミング)」および「プッシュ サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

  3. エージェントの出力で検証結果を確認します。

  4. 検証の対象となる各サブスクリプションについて、手順 1. から手順 3. を繰り返します。

注意

レプリケーション マージ エージェントを実行するときに、-Validate パラメータを指定することによって、マージ パブリケーションのサブスクリプションについても同期処理の最後に検証を実行できます。

マージ エージェントのパラメータを使用してサブスクリプションのデータを検証するには