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 = ] 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 ]
[ ; ]
Argumentos
@publisher [ = ] N'editor'
O nome do Editor. @publisher é sysname, sem padrão.
Observação
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 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 Publicador. @publisher_db é sysname, com um padrão de NULL
. @publisher_db é ignorado pelos Publicadores Oracle.
@publication [ = ] N'publicação'
O nome da publicação. @publication é sysname, sem padrão.
@independent_agent [ = ] N'independent_agent'
Especifica se há um Agente de Distribuição autônomo para esta publicação. @independent_agent é nvarchar(5), com um padrão de true
.
- Se
true
, há um Agente de Distribuição independente para esta publicação. - Se
false
, houver um Distribution Agent para cada par de banco de dados do Publicador/banco de dados do Assinante.
@independent_agent é uma propriedade da publicação e deve ter o mesmo valor que o Publicador.
@subscription_type [ = ] N'subscription_type'
O tipo de assinatura. @subscription_type é nvarchar(9), com um padrão de anonymous
. Você deve especificar um valor de pull
para @subscription_type, a menos que queira criar uma assinatura sem registrar a assinatura no Publicador. Nesse caso, você deve especificar um valor de anonymous
. Isso é necessário para casos em que você não pode estabelecer uma conexão do SQL Server com o Publicador durante a configuração da assinatura.
@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.
Valor | Descrição |
---|---|
read only (padrão) |
A assinatura é somente leitura. Quaisquer alterações no Assinante não são enviadas de volta ao Publicador. Deve ser usado quando as atualizações não são feitas 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 |
Observação: Não há suporte para Publicadores Oracle. 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. |
@immediate_sync [ = ] immediate_sync
Especifica se os arquivos de sincronização são criados ou recriados sempre que o Snapshot Agent é 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 que o Publicador.
Valores do código de retorno
0
(sucesso) ou 1
(falha).
Comentários
sp_addpullsubscription
é usado na replicação de instantâneo e na replicação transacional.
Importante
Para assinaturas de atualização enfileiradas, use a Autenticação do SQL Server 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 enfileirada, 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ário para usar a Autenticação do SQL Server). Nesse caso, você deve executar sp_changesubscription para alterar a conexão para usar a Autenticação do SQL Server depois que a assinatura for configurada.
Se a tabela MSreplication_subscriptions não existir no Assinante, sp_addpullsubscription
crie-a. Ele também adiciona uma linha à tabela MSreplication_subscriptions . Para assinaturas pull, sp_addsubscription deve ser chamado primeiro no Publicador.
Exemplos
-- 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
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
.
Conteúdo relacionado
- Create a Pull Subscription
- Create an Updatable Subscription to a Transactional Publication
- Subscribe to Publications
- 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)