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'
    指定非 MicrosoftSQL Server 發行者。publisher 是 sysname,預設值是 NULL。

    [!附註]

    屬於 SQL Server 發行者的發行集,不應使用 publisher。

傳回碼值

0 (成功) 或 1 (失敗)

備註

sp_marksubscriptionvalidation 用於交易式複寫中。

sp_marksubscriptionvalidation 不支援非 SQL Server 訂閱者。

如果是非 SQL Server 發行者,您不能從明確交易內執行 sp_marksubscriptionvalidation。這是因為在用來存取發行者的連結伺服器連接上,不支援使用明確的交易。

sp_marksubscriptionvalidation 必須指定 subscription_level1 值來搭配 sp_article_validation (Transact-SQL) 使用,也可以搭配其他 sp_marksubscriptionvalidation 呼叫,來標示其他訂閱者目前開啟的交易。

權限

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

範例

下列查詢適用於發行資料庫,以用來封裝訂閱層級的驗證命令。這些命令由指定訂閱者的散發代理程式所收取。請注意,第一項交易會驗證 'art1' 發行項,第二項交易則驗證 'art2'。另請注意,針對 sp_marksubscriptionvalidationsp_article_validation (Transact-SQL) 的呼叫已封裝於一項交易中。建議您一項交易僅封裝一次 sp_article_validation (Transact-SQL) 的呼叫。這是因為 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