sp_publication_validation (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
指定したパブリケーション内の各アーティクルに対してアーティクル検証要求を開始します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
構文
sp_publication_validation
[ @publication = ] N'publication'
[ , [ @rowcount_only = ] rowcount_only ]
[ , [ @full_or_fast = ] full_or_fast ]
[ , [ @shutdown_agent = ] shutdown_agent ]
[ , [ @publisher = ] N'publisher' ]
[ ; ]
引数
[ @publication = ] N'publication'
出版物の名前。 @publication は sysname で、既定値はありません。
[ @rowcount_only = ] rowcount_only
テーブルの行数のみを返すかどうかを指定します。 @rowcount_only は smallint であり、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
0 |
SQL Server 7.0 互換チェックサムを実行します。 注: アーティクルを水平方向にフィルター処理すると、チェックサム操作ではなく行数操作が実行されます。 |
1 (既定) |
行数チェックのみを実行します。 |
2 |
行数とバイナリ チェックサムを実行します。 |
[ @full_or_fast = ] full_or_fast
行数の計算に使用するメソッド。 @full_or_fast は tinyint で、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
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 = ] N'publisher'
SQL Server 以外のパブリッシャーを指定します。 @publisher は sysname で、既定値は NULL
です。
@publisher は、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
を実行できます。