Share 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ópico Convenções da 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 de 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 existe um Agente de Distribuição autônomo para esta publicação. independent_agent é nvarchar(5), com um padrão de TRUE. Se for true, haverá um Agente de Distribuição autônomo para essa publicação. Se false, haverá um Agente de Distribuição para cada par de banco de dados publicador/banco de dados do assinante. independent_agent é uma propriedade da publicação e tem o mesmo valor aqui como o que tem no Publicador.

  • [ @subscription_type=] 'subscription_type'
    É o tipo de assinatura: subscription_type é nvarchar(9), com um padrão de anônimo. É 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 de NULL.

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

    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.

    sync tran

    Habilita suporte para assinaturas de atualização imediata.

    queued tran

    Habilita a assinatura de atualização enfileirada. As modificações de dados podem ser feitas no Assinante, armazenadas em uma fila e, depois, propagadas ao 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 ao 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 Editores Oracle.

  • [ @immediate_sync =] immediate_sync
    Especifica se os arquivos de sincronização serão criados ou recriados em cada execução do Agente de Instantâneo. 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 da 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 enfileiradas, 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'AdventureWorks2012';

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

Consulte também

Referência

sp_addpullsubscription_agent (Transact-SQL)

sp_change_subscription_properties (Transact-SQL)

sp_droppullsubscription (Transact-SQL)

sp_helppullsubscription (Transact-SQL)

sp_helpsubscription_properties (Transact-SQL)

Procedimentos armazenados do sistema (Transact-SQL)

Conceitos

Criar uma assinatura pull

Criar uma assinatura atualizável em uma publicação transacional

Assinar publicações