sp_marksubscriptionvalidation (Transact-SQL)

適用対象:SQL Server

現在開いているトランザクションを、指定したサブスクライバーのサブスクリプション レベルの検証トランザクションとしてマークします。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

Transact-SQL 構文表記規則

構文

  
sp_marksubscriptionvalidation [ @publication = ] 'publication'  
        , [ @subscriber = ] 'subscriber'  
        , [ @destination_db = ] 'destination_db'  
    [ , [ @publisher = ] 'publisher' ]  

引数

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

[ @subscriber = ] 'subscriber' サブスクライバーの名前です。 サブスクライバー は sysname で、既定値はありません。

[ @destination_db = ] 'destination_db' コピー先データベースの名前を指定します。 destination_dbsysname で、既定値はありません。

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

注意

publisher は、SQL Server パブリッシャーに属するパブリケーションには使用しないでください。

リターン コードの値

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

解説

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

sp_marksubscriptionvalidationでは、SQL Server以外のサブスクライバーはサポートされていません。

SQL Server以外のパブリッシャーの場合、明示的なトランザクション内からsp_marksubscriptionvalidationを実行することはできません。 これは、パブリッシャーへのアクセスに使用されるリンク サーバー接続で明示的なトランザクションがサポートされていないためです。

sp_marksubscriptionvalidation、sp_article_validation (Transact-SQL) と共に使用する必要があり、subscription_level1 の値を指定し、他のサブスクライバーの現在開いているトランザクションをマークするために、sp_marksubscriptionvalidationの他の呼び出しと共に使用できます。

アクセス許可

sysadmin 固定サーバー ロールまたは固定データベース ロールdb_ownerメンバーのみがsp_marksubscriptionvalidation実行できます。

次のクエリは、サブスクリプションレベルの検証コマンドを通知するために、パブリッシング データベースに適用できます。 これらのコマンドは、指定されたサブスクライバーのディストリビューション エージェントによって取得されます。 最初のトランザクションではアーティクル 'art1' が検証され、2 番目のトランザクションでは 'art2' が検証されることに注意してください。 また、 sp_marksubscriptionvalidationsp_article_validation (Transact-SQL) の呼び出しがトランザクションにカプセル化されていることにも注意してください。 sp_article_validation (Transact-SQL) の呼び出しは、トランザクションごとに 1 つだけお勧めします。 これは、 sp_article_validation (Transact-SQL) がトランザクションの間、ソース テーブルに対して共有テーブル ロックを保持するためです。 コンカレンシーを最大限に高めるために、トランザクションは短くしてください。

begin tran  
  
exec sp_marksubscriptionvalidation @publication = 'pub1',  
 @subscriber = 'Sub', @destination_db = 'SubDB'  
  
exec sp_marksubscriptionvalidation @publication = 'pub1',  
 @subscriber = 'Sub2', @destination_db = 'SubDB'  
  
exec sp_article_validation @publication = 'pub1', @article = 'art1',  
 @rowcount_only = 0, @full_or_fast = 0, @shutdown_agent = 0,  
 @subscription_level = 1  
  
commit tran  
  
begin tran  
  
exec sp_marksubscriptionvalidation @publication = 'pub1',  
 @subscriber = 'Sub', @destination_db = 'SubDB'  
  
exec sp_marksubscriptionvalidation @publication = 'pub1',  
 @subscriber = 'Sub2', @destination_db = 'SubDB'  
  
exec sp_article_validation @publication = 'pub1', @article = 'art2',  
 @rowcount_only = 0, @full_or_fast = 0, @shutdown_agent = 0,  
 @subscription_level = 1  
  
commit tran  

参照

システム ストアド プロシージャ (Transact-SQL)
レプリケートされたデータの検証