sp_addpullsubscription (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

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.

Convenções de sintaxe de 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.

Observação

O nome do servidor pode ser especificado como <Hostname>,<PortNumber>. Talvez seja necessário especificar o número da porta para sua conexão quando SQL Server for implantado no Linux ou no Windows com uma porta personalizada e o serviço de navegador estiver desabilitado. O uso de números de porta personalizados para distribuidor remoto aplica-se apenas ao SQL Server 2019.

[ @publisher_db = ] 'publisher_db' É o nome do banco de dados publicador. publisher_db é sysname, com um padrão de NULL. publisher_db é ignorado pelos Editores Oracle.

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

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

[ @subscription_type = ] 'subscription_type' É o tipo de assinatura. subscription_type é nvarchar(9), com um padrão de anônimo. Você deve especificar um valor de pull para subscription_type, a menos que deseje criar uma assinatura sem registrar a assinatura no Publicador. Nesse caso, você deve especificar um valor de anônimo. Isso é necessário para casos em que você não pode estabelecer uma conexão SQL Server com o Publicador durante a 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
somente leitura (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. 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 Publicadores Oracle.

[ @immediate_sync = ] immediate_syncÉ se os arquivos de sincronização são criados ou recriados sempre que o Agente de Instantâneo é executado. immediate_sync é bit com um padrão de 1 e deve ser definido com o mesmo valor que immediate_sync em sp_addpublication. immediate_sync é uma propriedade da publicação e deve ter o mesmo valor aqui que tem no Publicador.

Valores do código de retorno

0 (êxito) ou 1 (falha)

Comentários

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

Importante

Para assinaturas de atualização na fila, use SQL Server Autenticação para conexões com Assinantes e especifique uma conta diferente para a conexão com cada Assinante. Ao criar uma assinatura pull que dá suporte à atualização na fila, a replicação sempre define a conexão para usar a Autenticação do Windows (para assinaturas pull, a replicação não pode acessar metadados no Assinante necessários para usar SQL Server Autenticação). Nesse caso, você deve executar sp_changesubscription para alterar a conexão para usar SQL Server Autenticação depois que a assinatura for configurada.

Se a tabela MSreplication_subscriptions (Transact-SQL) não existir no Assinante, sp_addpullsubscription a criará. Ele também adiciona uma linha à tabela MSreplication_subscriptions (Transact-SQL). Para assinaturas pull, sp_addsubscription (Transact-SQL) deve ser chamado primeiro 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 db_owner função de banco de dados fixa podem executar sp_addpullsubscription.

Consulte Também

Criar uma assinatura pull
Criar uma assinatura atualizável para uma publicação transacionalassinar publicações
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)