sp_marksubscriptionvalidation (Transact-SQL)

适用于:SQL Server

将当前打开的事务标记为指定订阅服务器的订阅级验证事务。 此存储过程在发布服务器上对发布数据库执行。

Transact-SQL 语法约定

语法

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

参数

[ @publication = ] 'publication' 发布的名称。 publicationsysname,无默认值。

[ @subscriber = ] 'subscriber' 订阅服务器的名称。 订阅服务器 为 sysname,无默认值。

[ @destination_db = ] 'destination_db' 目标数据库的名称。 destination_dbsysname,无默认值。

[ @publisher = ] 'publisher'指定非 Microsoft SQL Server 发布服务器。 publishersysname,默认值为 NULL。

注意

publisher 不应用于属于 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的其他调用一起使用,以标记其他订阅者的当前打开事务。

权限

只有 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  

另请参阅

系统存储过程 (Transact-SQL)
验证已复制的数据