Compartilhar via


sp_addpullsubscription (Transact-SQL)

Adiciona uma assinatura pull a um instantâneo ou publicação transacional. Esse procedimento armazenado é executado no Assinante, no banco de dados onde a assinatura pull será criada.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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'
    O nome do Publicador. publisher é sysname, sem padrão.

  • [ @publisher_db=] 'publisher_db'
    O nome do banco de dados Publicador. publisher_db é sysname, com um padrão NULL. publisher_db é ignorado por Publicadores Oracle.

  • [ @publication=] 'publication'
    É o nome da publicação. publication é sysname, sem padrão.

  • [ @independent_agent=] 'independent_agent'
    Especifica se há um Distribution Agent autônomo para essa publicação. independent_agent é nvarchar(5), com um padrão de TRUE. Se for true, haverá um Distribution Agent autônomo para essa publicação. Se for false, haverá um Distribution Agent para cada par de banco de dados Publicador/Assinante. independent_agent é uma propriedade da publicação e deve ter aqui o mesmo valor que tem no Publicador.

  • [ @subscription_type=] 'subscription_type'
    É o tipo de assinatura. subscription_type é nvarchar(9), com um padrão anonymous. É necessário especificar um valor pull para subscription_type, a menos que você queira criar uma assinatura sem registrá-la no Publicador. Nesse caso, você deve especificar um valor anonymous. Isso é necessário em casos nos quais você não pode estabelecer uma conexão SQL Server com o Publicador durante configuração da assinatura.

  • [ @description=] 'description'
    É a descrição da publicação. description é nvarchar(100), com um padrão NULL.

  • [ @update_mode=] 'update_mode'
    É o tipo de atualização. update_mode é nvarchar(30)e pode ser um dos seguintes valores.

    Valor

    Descrição

    read only (padrão)

    A assinatura é somente leitura. Qualquer alteração no Assinante não será mandada de volta ao Publicador. Deve ser usado quando não são feitas atualizações no Assinante.

    synctran

    Habilita suporte para assinaturas de atualização imediata.

    queued tran

    Habilita a assinatura de atualização enfileirada. Modificações de dados podem ser feitas no Assinante, armazenadas em uma fila, e então propagadas para o Publicador.

    failover

    Habilita a assinatura para atualização imediata com atualização enfileirada como um failover. Modificações de dados podem ser feitas no Assinante e propagadas para o Publicador imediatamente. Se o Publicador e o Assinante não estiverem conectados, as modificações de dados feitas no Assinante poderão ser armazenadas em uma fila até que o Assinante e o Publicador sejam reconectados.

    queued failover

    Habilita a assinatura como uma assinatura de atualização enfileirada com a capacidade de alterar para o modo de atualização imediata. Modificações de dados podem ser feitas no Assinante e armazenadas em uma fila até que a conexão seja estabelecida entre o Assinante e o Publicador. Quando uma conexão contínua é estabelecida, o modo de atualização pode ser alterado para atualização imediata. Sem suporte para Publicadores Oracle.

  • [ @immediate_sync =] immediate_sync
    Se os arquivos de sincronização forem criados e recriados cada vez que o Snapshot Agent for executado. immediate_sync é bit com um padrão de 1 e deve ser definido com o mesmo valor de immediate_sync em sp_addpublication.immediate_sync é uma propriedade de publicação e deve ter aqui o mesmo valor que tem no Publicador.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_addpullsubscription é usado em replicação de instantâneo e replicação transacional.

Observação sobre segurançaObservação sobre segurança

Para assinaturas de atualização enfileirada, use Autenticação do SQL Server para conexões com Assinantes, e especifique uma conta diferente para conexão com cada assinante. Ao criar uma assinatura pull que oferece suporte a atualização em fila, a replicação sempre define a conexão para usar a Autenticação do Windows (em assinaturas pull, a replicação não pode acessar metadados em Assinante com Autenticação do SQL Server). Nesse caso, execute sp_changesubscription para alterar a conexão para usar a Autenticação do SQL Server depois que a assinatura é configurada.

Se a tabela MSreplication_subscriptions (Transact-SQL) não existir no Assinante, será criada por sp_addpullsubscription. Ele também adiciona uma linha à tabela MSreplication_subscriptions (Transact-SQL). Para assinaturas pull, sp_addsubscription (Transact-SQL) deve ser chamado primeiramente no Publicador.

Exemplo

-- 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'AdventureWorks2008R2';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2008R2Replica]
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

Permissões

Somente membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_addpullsubscription.