sp_addpullsubscription (Transact-SQL)

Agrega una suscripción de extracción a una publicación de instantáneas o transaccional. Este procedimiento almacenado se ejecuta en el suscriptor de la base de datos donde se va a crear la suscripción de extracción.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_addpullsubscription [ @publisher= ] 'publisher'
    [ , [ @publisher_db= ] 'publisher_db' ]
        , [ @publication= ] 'publication'
    [ , [ @independent_agent= ] 'independent_agent' ]
    [ , [ @subscription_type= ] 'subscription_type' ]
    [ , [ @description= ] 'description' ]
    [ , [ @update_mode= ] 'update_mode' ]
    [ , [ @immediate_sync = ] immediate_sync ]

Argumentos

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

  • [ @publisher_db=] 'publisher_db'
    Es el nombre de la base de datos del publicador. publisher_db es de tipo sysname y su valor predeterminado es NULL. Los publicadores de Oracle omiten publisher_db.

  • [ @publication=] 'publication'
    Es el nombre de la publicación. publication es de tipo sysname y no tiene ningún valor predeterminado.

  • [ @independent_agent=] 'independent_agent'
    Especifica si hay un Agente de distribución independiente para esta publicación. independent_agent es de tipo nvarchar(5) y su valor predeterminado es TRUE. Si es true, indica que hay un Agente de distribución independiente para esta publicación. Si es false, hay un Agente de distribución para cada pareja de base de datos de publicador y base de datos de suscriptor. independent_agent es una propiedad de la publicación y tiene que tener el mismo valor aquí y en el publicador.

  • [ @subscription_type=] 'subscription_type'
    Es el tipo de suscripción. subscription_type es de tipo nvarchar(9) y su valor predeterminado es anonymous Debe especificar un valor de pull para subscription_type a no ser que desee crear una suscripción sin registrarla en el publicador. En este caso, debe especificar un valor de anonymous. Esto es necesario en casos donde no puede establecer una conexión de SQL Server con el publicador durante la configuración de la suscripción.

  • [ @description=] 'description'
    Es la descripción de la publicación. description es de tipo nvarchar(100) y su valor predeterminado es NULL.

  • [ @update_mode=] 'update_mode'
    Es el tipo de actualización. update_mode es de tipo nvarchar(30) y puede tener uno de los valores siguientes.

    Valor

    Descripción

    read only (predeterminado)

    La suscripción es de sólo lectura. Los cambios en el suscriptor no se devuelven al publicador. Se debe utilizar cuando las actualizaciones no se realicen en el suscriptor.

    synctran

    Habilita la compatibilidad con las suscripciones de actualización inmediata.

    queued tran

    Permite la actualización en cola de la suscripción. Las modificaciones de los datos se realizan en el suscriptor, se almacenan en una cola y después se propagan al publicador.

    failover

    Permite la actualización inmediata de las suscripciones con la actualización en cola como conmutación por error. Las modificaciones de los datos se pueden realizar en el suscriptor y propagarse inmediatamente al publicador. Si el publicador y el suscriptor no están conectados, las modificaciones de los datos realizadas en el suscriptor pueden almacenarse en una cola hasta que el suscriptor y el publicador vuelvan a conectarse.

    queued failover

    Habilita la suscripción como una suscripción de actualización en cola con la posibilidad de cambiar al modo de actualización inmediata. Las modificaciones de los datos se pueden realizar en el suscriptor y almacenar en una cola hasta que se establezca una conexión entre el suscriptor y el publicador. Cuando se establezca una conexión continua, se puede cambiar el modo de actualización a actualización inmediata. No se admite en publicadores de Oracle.

  • [ @immediate_sync =] immediate_sync
    Indica si los archivos de sincronización se crean o se vuelven a crear en cada ejecución del Agente de instantáneas. immediate_sync es de tipo bit, su valor predeterminado es 1, y debe tener el mismo valor que immediate_sync en sp_addpublication. immediate_sync es una propiedad de la publicación y debe tener el mismo valor aquí que en el publicador.

Valores de código de retorno

0 (correcto) o 1 (error)

Notas

sp_addpullsubscription se utiliza en la replicación de instantáneas y transaccional.

Nota de seguridadNota de seguridad

En el caso de las suscripciones de actualización en cola, utilice la autenticación de SQL Server para las conexiones a los suscriptores y especifique otra cuenta para la conexión a cada suscriptor. Al crear una suscripción de extracción que admita la actualización en cola, la replicación siempre establece el uso de la autenticación de Windows en la conexión (en suscripciones de extracción, la replicación no puede tener acceso a metadatos en el suscriptor con autenticación de SQL Server). En este caso, debe ejecutar sp_changesubscription para cambiar la conexión de modo que utilice la autenticación de SQL Server después de configurar la suscripción.

Si la tabla MSreplication_subscriptions (Transact-SQL) no existe en el suscriptor, sp_addpullsubscription la crea. También agrega una fila a la tabla MSreplication_subscriptions (Transact-SQL). Para las suscripciones de extracción, primero debe llamar a sp_addsubscription (Transact-SQL) en el publicador.

Ejemplo

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorksReplica]
EXEC sp_addpullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

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_addpullsubscription.