Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure 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.
Conteúdo relacionado
- Crie uma Subscrição de Pull
- Criar uma assinatura atualizável para uma publicação transacional
- Subscreva 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)