次の方法で共有


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

関連項目

参照

システム ストアド プロシージャ (Transact-SQL)

概念

レプリケートされたデータの検証