sp_marksubscriptionvalidation (Transact-SQL)

適用於:SQL Server

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

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 發行者的發行集。

傳回碼值

0 (成功) 或 1 (失敗)

備註

sp_marksubscriptionvalidation用於異動複寫。

sp_marksubscriptionvalidation 不支援非 SQL Server 訂閱者。

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

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

權限

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

範例

下列查詢可以套用至發佈資料庫,以張貼訂閱層級驗證命令。 這些命令是由指定訂閱者的散發代理程式所挑選。 請注意,第一筆交易會驗證發行項 ' art1 ',而第二筆交易則會驗證 ' art2 '。 另請注意,對 sp_marksubscriptionvalidation sp_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  

另請參閱

系統預存程序 (Transact-SQL)
驗證複寫的資料