sp_marksubscriptionvalidation (Transact-SQL)

Marca la transacción que esté abierta en ese momento como transacción de validación de suscripción del suscriptor especificado. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicaciones.

Icono de vínculo a temasConvenciones 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 de tipo sysname y no tiene ningún valor predeterminado.

  • [ @subscriber= ] 'subscriber'
    Es el nombre del suscriptor. subscriber es de tipo sysname y no tiene ningún valor predeterminado.

  • [ @destination_db=] 'destination_db'
    Es el nombre de la base de datos de destino. destination_db es de tipo sysname y no tiene ningún valor predeterminado.

  • [ @publisher= ] 'publisher'
    Especifica un publicador que no es de MicrosoftSQL Server. publisher es de tipo sysname y su valor predeterminado es NULL.

    [!NOTA]

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

Valores de código de retorno

0 (correcto) o 1 (error)

Notas

sp_marksubscriptionvalidation se utiliza en la replicación transaccional.

sp_marksubscriptionvalidation no admite suscriptores que no son SQL Server.

En el caso de publicadores que no son SQL Server, no se puede ejecutar sp_marksubscriptionvalidation desde 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 debe utilizarse conjuntamente con sp_article_validation (Transact-SQL), para lo que se debe especificar un valor de 1 para subscription_level. Puede utilizarse con otras llamadas a sp_marksubscriptionvalidation para marcar la transacción abierta actual para otros suscriptores.

Permisos

Sólo los miembros de la función fija de servidor sysadmin o de la función fija de base de datos db_owner 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 sólo una llamada a sp_article_validation (Transact-SQL) por transacción. Esto se debe a que sp_article_validation (Transact-SQL) mantiene un bloqueo de tabla compartida en la tabla de origen mientras dura 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