次の方法で共有


sp_marksubscriptionvalidation (Transact-SQL)

適用対象: SQL サーバー

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

Transact-SQL 構文表記規則

構文

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

引数

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

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

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

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

Note

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

リターン コードの値

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

解説

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

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

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

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

アクセス許可

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

次のクエリは、サブスクリプションレベルの検証コマンドを通知するために、パブリッシング データベースに適用できます。 これらのコマンドは、指定されたサブスクライバーのディストリビューション エージェントによって取得されます。 最初のトランザクションではアーティクル '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)
レプリケートされたデータの検証