sp_marksubscriptionvalidation (Transact-SQL)

Se aplica a:SQL Server

Marca la transacción abierta actual para que sea una transacción de validación de nivel de suscripción para el suscriptor especificado. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @publication = ] 'publication' Es el nombre de la publicación. publication es sysname, sin ningún valor predeterminado.

[ @subscriber = ] 'subscriber' Es el nombre del suscriptor. subscriber es sysname, sin ningún valor predeterminado.

[ @destination_db = ] 'destination_db' Es el nombre de la base de datos de destino. destination_db es sysname, sin ningún valor predeterminado.

[ @publisher = ] 'publisher'Especifica un publicador que no es de Microsoft SQL Server. publisher es sysname, con un valor predeterminado de NULL.

Nota

publisher no debe usarse para una publicación que pertenezca a un publicador de SQL Server.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

sp_marksubscriptionvalidation se usa en la replicación transaccional.

sp_marksubscriptionvalidation no admite suscriptores que no sean de SQL Server.

En el caso de publicadores que no son de SQL Server, no se puede ejecutar sp_marksubscriptionvalidation desde dentro de una transacción explícita. Esto se debe a que las transacciones explícitas no se admiten en la conexión al servidor vinculado que se utiliza para obtener acceso al publicador.

sp_marksubscriptionvalidation se debe usar junto con sp_article_validation (Transact-SQL), especificando un valor de 1 para subscription_level y se puede usar con otras llamadas a sp_marksubscriptionvalidation para marcar la transacción abierta actual para otros suscriptores.

Permisos

Solo los miembros del rol fijo de servidor sysadmin o db_owner rol fijo de base de datos pueden ejecutar sp_marksubscriptionvalidation.

Ejemplo

La siguiente consulta puede aplicarse a la base de datos de publicaciones para exponer comandos de validación de suscripción. Los Agentes de distribución de los suscriptores especificados recogen estos comandos. Tenga en cuenta que la primera transacción valida el artículo "art1", mientras que la segunda transacción valida "art2". Tenga en cuenta también que las llamadas a sp_marksubscriptionvalidation y sp_article_validation (Transact-SQL) se han encapsulado en una transacción. Se recomienda solo una llamada a sp_article_validation (Transact-SQL) por transacción. Esto se debe a que sp_article_validation (Transact-SQL) contiene un bloqueo de tabla compartida en la tabla de origen durante la transacción. Debe mantener la transacción corta para maximizar la simultaneidad.

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  

Consulte también

Procedimientos almacenados del sistema (Transact-SQL)
Validar datos replicados