sp_publication_validation (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
指定したパブリケーション内の各アーティクルに対してアーティクル検証要求を開始します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
構文
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'
パブリケーションの名前を指定します。 publication は sysname で、既定値はありません。
[ @rowcount_only = ] 'rowcount_only'
テーブルの行数のみを返すかどうかを指定します。 rowcount_only は smallint 次のいずれかの値になります。
Value | 説明 |
---|---|
0 | SQL Server 7.0 互換チェックサムを実行します。 注: アーティクルを水平方向にフィルター処理すると、チェックサム操作ではなく行数操作が実行されます。 |
1 (既定値) | 行数チェックのみを実行します。 |
2 | 行数とバイナリ チェックサムを実行します。 注: 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 は bit で、既定値は 0 です。 0場合、レプリケーション エージェントはシャットダウンしません。 1場合、レプリケーション エージェントは、最後の記事が検証された後にシャットダウンします。
[ @publisher = ] 'publisher'
SQL Server 以外のパブリッシャーを指定します。 publisher は sysname で、既定値は NULL です。
Note
パブリッシャー は、SQL Server パブリッシャーで検証を要求するときに使用しないでください。
リターン コードの値
0 (成功) または 1 (失敗)
解説
sp_publication_validation はトランザクション レプリケーションで使用されます。
sp_publication_validation は、パブリケーションに関連付けられているアーティクルがアクティブ化された後、いつでも呼び出すことができます。 プロシージャは、手動で (1 回) 実行することも、データを検証する定期的にスケジュールされたジョブの一部として実行することもできます。
アプリケーションに即時更新サブスクライバーがある場合、 sp_publication_validation は誤ったエラーを検出する可能性があります。 sp_publication_validation 最初にパブリッシャーで行数またはチェックサムを計算し、次にサブスクライバーで計算します。 行数またはチェックサムがパブリッシャーで完了していて、サブスクライバーでは完了していない場合、即時更新トリガーはサブスクライバーからパブリッシャーに更新を通知できるため、値が変更される可能性があります。 パブリケーションの検証中にサブスクライバーとパブリッシャーの値が変更されないようにするには、検証中のパブリッシャーでの Microsoft 分散トランザクション コーディネーター (MS DTC) サービスを停止します。
アクセス許可
sysadmin固定サーバー ロールまたはdb_owner固定データベース ロールのメンバーのみがsp_publication_validationを実行できます。
参照
サブスクライバーでのデータの検証
sp_article_validation (Transact-SQL)
sp_table_validation (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)