共用方式為


sp_marksubscriptionvalidation (Transact-SQL)

適用於:SQL Server

將目前開啟的交易標示為指定訂閱者的訂閱層級驗證交易。 這個預存程式會在發行集資料庫的發行者端執行。

Transact-SQL 語法慣例

語法

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

引數

[ @publication = ] N'publication'

發行集的名稱。 @publication為 sysname,沒有預設值。

[ @subscriber = ] N'subscriber'

訂閱者的名稱。 @subscriber為 sysname,沒有預設值。

[ @destination_db = ] N'destination_db'

目的地資料庫的名稱。 @destination_db為 sysname,沒有預設值。

[ @publisher = ] N'publisher'

指定非 SQL Server 發行者。 @publisher為 sysname,預設值為 NULL

@publisher不應該用於屬於 SQL Server 發行者的發行集。

傳回碼值

0 (成功) 或 1 (失敗)。

備註

sp_marksubscriptionvalidation 用於事務複製。

sp_marksubscriptionvalidation 不支援非 SQL Server 訂閱者。

針對非 SQL Server 發行者,您無法從明確交易內執行 sp_marksubscriptionvalidation 。 這是因為透過用來存取發行者的連結伺服器連線不支持明確交易。

sp_marksubscriptionvalidation必須與 sp_article_validation搭配使用,並指定 @subscription_level的值1,而且可以與其他呼叫sp_marksubscriptionvalidation搭配使用,以標記其他訂閱者的目前開啟交易。

權限

只有系統管理員固定伺服器角色或db_owner固定資料庫角色的成員才能執行 sp_marksubscriptionvalidation

範例

下列查詢可以套用至發佈資料庫,以張貼訂閱層級驗證命令。 這些命令是由指定訂閱者的 散發代理程式 所挑選。 第一個交易會驗證發行項 art1,而第二個交易會 art2驗證 。 對 sp_marksubscriptionvalidationsp_article_validation 的呼叫會封裝在交易中。 我們建議每筆交易只呼叫 一次 sp_article_validation。 這是因為 sp_article_validation 交易期間保留源數據表的共享數據表鎖定。 您應該讓交易保持簡短,以將並行存取最大化。

BEGIN TRANSACTION;

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 TRANSACTION;

BEGIN TRANSACTION;

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 TRANSACTION;