次の方法で共有


sp_marksubscriptionvalidation (Transact-SQL)

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

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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

引数

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

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

  • [ @destination_db=] 'destination_db'
    対象となるデータベースの名前を指定します。destination_db のデータ型は sysname で、既定値はありません。

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

    注意

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

戻り値

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 固定データベース ロールのメンバだけです。

使用例

次のクエリは、サブスクリプションレベルの検証コマンドを通知するために、パブリッシング データベースに適用できます。これらのコマンドは、指定されたサブスクライバのディストリビューション エージェントによって処理されます。1 番目のトランザクションによってアーティクル 'art1' が検証され、2 番目のトランザクションによって 'art2' が検証されることに注意してください。また、sp_marksubscriptionvalidation および sp_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