sp_publication_validation (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

指定したパブリケーション内の各アーティクルに対してアーティクル検証要求を開始します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

Transact-SQL 構文表記規則

構文

  
sp_publication_validation [ @publication = ] 'publication'  
    [ , [ @rowcount_only = ] type_of_check_requested ]  
    [ , [ @full_or_fast = ] full_or_fast ]  
    [ , [ @shutdown_agent = ] shutdown_agent ]  
    [ , [ @publisher = ] 'publisher' ]  

引数

[ @publication = ] 'publication' パブリケーションの名前を指定します。 publicationsysname で、既定値はありません。

[ @rowcount_only = ] 'rowcount_only' テーブルの行数のみを返すかどうかを指定します。 rowcount_onlyは smallint で、次のいずれかの値を指定できます。

Value 内容
0 SQL Server 7.0 互換チェックを実行します。

注: アーティクルを水平方向にフィルター処理すると、チェックsum 操作ではなく行数操作が実行されます。
1 (既定値) 行数チェックのみを実行します。
2 行数とバイナリ チェックsum を実行します。

注: SQL Server バージョン 7.0 サブスクライバーの場合、行数の検証のみが実行されます。

[ @full_or_fast = ] 'full_or_fast' 行数の計算に使用されるメソッドです。 full_or_fastは tinyint で、次のいずれかの値を指定できます。

Value 内容
0 COUNT(*) を使用してフル カウントします。
1 sysindexes.rows からの 高速カウントを行います。 sys.sysindexes での行のカウントは、実際のテーブル内の行をカウントするよりもはるかに高速です。 ただし、sys.sysindexes は遅延更新されるため、行数が正確でない可能性があります。
2 (既定値) 最初に高速カウントを試み、条件高速カウントを行います。 高速メソッドが違いを示す場合は、完全なメソッドに戻ります。 expected_rowcountが NULL で、ストアド プロシージャが値の取得に使用されている場合は、常に完全な COUNT(*) が使用されます。

[ @shutdown_agent = ] 'shutdown_agent'検証が完了した直後にディストリビューション エージェントをシャットダウンするかどうかを指定します。 shutdown_agentはビットで、既定値は 0 です。 0 の場合、レプリケーション エージェントはシャットダウンしません。 1 の場合、レプリケーション エージェントは最後の記事が検証された後にシャットダウンします。

[ @publisher = ] 'publisher' SQL Server 以外のパブリッシャーを指定します。 publishersysname で、既定値は NULL です。

Note

SQL Server パブリッシャー で検証を要求する場合は、パブリッシャーを使用しないでください。

リターン コードの値

0 (成功) または 1 (失敗)

解説

sp_publication_validationはトランザクション レプリケーションで使用されます。

sp_publication_validationは、パブリケーションに関連付けられているアーティクルがアクティブ化された後、いつでも呼び出すことができます。 プロシージャは、手動で (1 回) 実行することも、データを検証する定期的にスケジュールされたジョブの一部として実行することもできます。

アプリケーションに即時更新サブスクライバーがある場合、 sp_publication_validation は誤ったエラーを検出する可能性があります。 sp_publication_validation最初にパブリッシャーで行数またはチェック数を計算し、次にサブスクライバーで計算します。 行数またはチェックサムがパブリッシャーで完了していて、サブスクライバーでは完了していない場合、即時更新トリガーはサブスクライバーからパブリッシャーに更新を通知できるため、値が変更される可能性があります。 パブリケーションの検証中にサブスクライバーとパブリッシャーの値が変更されないようにするには、検証中のパブリッシャーでの Microsoft 分散トランザクション コーディネーター (MS DTC) サービスを停止します。

アクセス許可

sp_publication_validationを実行できるのは、sysadmin 固定サーバー ロールまたはdb_owner固定データベース ロールのメンバーだけです。

参照

サブスクライバーでのデータの検証
sp_article_validation (Transact-SQL)
sp_table_validation (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)