sp_marksubscriptionvalidation (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_level 的 1 值來搭配 sp_article_validation (Transact-SQL) 使用,也可以搭配其他 sp_marksubscriptionvalidation 呼叫,來標示其他訂閱者目前開啟的交易。
權限
只有系統管理員 (sysadmin) 固定伺服器角色或 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