sys.sp_addpullsubscription (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Adiciona uma subscrição pull a uma publicação snapshot ou transacional. Este procedimento armazenado é executado no Assinante na base de dados onde a subscrição pull deve ser criada.

Transact-SQL convenções de sintaxe

Syntax

sys.sp_addpullsubscription
    [ @publisher = ] N'publisher'
    [ , [ @publisher_db = ] N'publisher_db' ]
    , [ @publication = ] N'publication'
    [ , [ @independent_agent = ] N'independent_agent' ]
    [ , [ @subscription_type = ] N'subscription_type' ]
    [ , [ @description = ] N'description' ]
    [ , [ @update_mode = ] N'update_mode' ]
    [ , [ @immediate_sync = ] immediate_sync ]
[ ; ]

Arguments

[ @publisher = ] N'editora'

O nome do Editor. @publisher é sysname, sem padrão.

Note

O nome do servidor pode ser especificado como <Hostname>,<PortNumber> para uma instância padrão ou <Hostname>\<InstanceName>,<PortNumber> para uma instância nomeada. Especifique o número da porta para sua conexão quando o SQL Server for implantado no Linux ou no Windows com uma porta personalizada e o serviço do navegador estiver desabilitado. O uso de números de porta personalizados para distribuidor remoto se aplica ao SQL Server 2019 (15.x) e versões posteriores.

@publisher_db [ = ] N'publisher_db'

O nome do banco de dados do Publisher. @publisher_db é sysname, com um padrão de NULL. @publisher_db é ignorado pela Oracle Publishers.

@publication [ = ] N'publicação'

O nome da publicação. @publication é sysname, sem padrão.

[ @independent_agent = ] N'independent_agent'

Especifica se existe um Distribution Agent autónomo para esta publicação. @independent_agent é nvarchar(5), com um padrão de true.

  • Se true, existe um Distribution Agent independente para esta publicação.
  • Se false, existe um Distribution Agent para cada par de base de dados Publisher/base de dados de assinantes.

@independent_agent é uma propriedade da publicação e deve ter o mesmo valor que o Publisher.

[ @subscription_type = ] N'subscription_type'

O tipo de subscrição. @subscription_type é nvarchar(9), com um padrão de anonymous. Deve especificar um valor de pull para @subscription_type, a menos que queira criar uma subscrição sem registar a subscrição no Publisher. Neste caso, deve especificar um valor de anonymous. Isto é necessário para casos em que não consegue estabelecer uma ligação ao SQL Server ao Publisher durante a configuração da subscrição.

[ @description = ] N'descrição'

A descrição da publicação. @description é nvarchar(100), com um padrão de NULL.

[ @update_mode = ] N'update_mode'

O tipo de atualização. @update_mode é nvarchar(30), e pode ser um dos seguintes valores.

Value Descrição
read only (padrão) A assinatura é somente leitura. Quaisquer alterações no Assinante não são enviadas de volta ao Publisher. Deve ser usado quando as atualizações não são feitas no Assinante.
synctran Permite o suporte para atualização imediata de subscrições.
queued tran Permite a subscrição para atualizações em fila. As modificações de dados podem ser feitas no Assinante, armazenadas numa fila e depois propagadas ao Editor.
failover Permite a subscrição para atualização imediata com atualização em fila como failover. As modificações dos dados podem ser feitas no Assinante e propagadas imediatamente para o Editor. Se o Publisher e o Subscriber não estiverem ligados, as modificações de dados feitas no Subscriber podem ser armazenadas numa fila até que o Subscriber e o Publisher estejam novamente ligados.
queued failover Nota: Não é suportado para a Oracle Publishers.

Permite a subscrição como uma subscrição de atualização em fila, com a possibilidade de mudar para o modo de atualização imediata. As modificações de dados podem ser feitas no Assinante e armazenadas numa fila até que seja estabelecida uma ligação entre o Assinante e o Publicador. Quando uma ligação contínua é estabelecida, o modo de atualização pode ser alterado para atualização imediata.

[ @immediate_sync = ] immediate_sync

Especifica se os ficheiros de sincronização são criados ou recriados cada vez que o Agente de Snapshot é executado. @immediate_sync é bit, com um padrão de 1, e deve ser definido para o mesmo valor que @immediate_sync em sp_addpublication. @immediate_sync é uma propriedade da publicação e deve ter o mesmo valor que a Publisher.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

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

Importante

Para subscrições de atualização em fila, use a Autenticação SQL Server para ligações aos Assinantes e especifique uma conta diferente para cada Assinante. Ao criar uma subscrição pull que suporta atualização em fila, a replicação configura sempre a ligação para usar a Autenticação Windows (para subscrições pull, a replicação não pode aceder aos metadados do assinante necessário para usar a Autenticação SQL Server). Neste caso, deve executar sp_changesubscription para alterar a ligação e usar SQL Server Autenticação depois de a subscrição estar configurada.

Se a tabela de MSreplication_subscriptions não existir no Assinante, sp_addpullsubscription cria-a. Também adiciona uma linha à tabela MSreplication_subscriptions . Para subscrições de pull, sp_addsubscription deve ser ligado primeiro ao Publisher.

Examples

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

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

Permissions

Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_addpullsubscription.