次の方法で共有


sp_publication_validation (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance

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

Transact-SQL 構文表記規則

構文

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'

出版物の名前。 @publicationsysname で、既定値はありません。

[ @rowcount_only = ] rowcount_only

テーブルの行数のみを返すかどうかを指定します。 @rowcount_onlysmallint であり、次のいずれかの値を指定できます。

Value 説明
0 SQL Server 7.0 互換チェックサムを実行します。

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

[ @full_or_fast = ] full_or_fast

行数の計算に使用するメソッド。 @full_or_fasttinyint で、次のいずれかの値を指定できます。

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

[ @shutdown_agent = ] shutdown_agent

検証が完了した直後にディストリビューション エージェントをシャットダウンするかどうかを指定します。 @shutdown_agentbit で、既定値は 0 です。

  • 0場合、レプリケーション エージェントはシャットダウンしません。
  • 1場合、レプリケーション エージェントは、最後の記事が検証された後にシャットダウンします。

[ @publisher = ] N'publisher'

SQL Server 以外のパブリッシャーを指定します。 @publishersysname で、既定値は 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を実行できます。