sys.sp_addpullsubscription_agent (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Adiciona um novo trabalho agendado de agente usado para sincronizar uma subscrição pull com uma publicação transacional. Este procedimento armazenado é executado no Assinante na base de dados de subscrição.

Transact-SQL convenções de sintaxe

Syntax

sys.sp_addpullsubscription_agent
    [ @publisher = ] N'publisher'
    [ , [ @publisher_db = ] N'publisher_db' ]
    , [ @publication = ] N'publication'
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @distributor = ] N'distributor' ]
    [ , [ @distribution_db = ] N'distribution_db' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @distribution_jobid = ] distribution_jobid OUTPUT ]
    [ , [ @encrypted_distributor_password = ] encrypted_distributor_password ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @ftp_address = ] N'ftp_address' ]
    [ , [ @ftp_port = ] ftp_port ]
    [ , [ @ftp_login = ] N'ftp_login' ]
    [ , [ @ftp_password = ] N'ftp_password' ]
    [ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @use_ftp = ] N'use_ftp' ]
    [ , [ @publication_type = ] publication_type ]
    [ , [ @dts_package_name = ] N'dts_package_name' ]
    [ , [ @dts_package_password = ] N'dts_package_password' ]
    [ , [ @dts_package_location = ] N'dts_package_location' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_security_mode = ] job_security_mode ]
[ ; ]

Arguments

@publisher [ = ] N'editor'

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.

[ @subscriber = ] N'assinante'

O nome da instância do assinante ou o nome do ouvinte AG se a base de dados do assinante estiver num grupo de disponibilidade. @subscriber é sysname, com um padrão de NULL.

Note

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.

Ao correr sp_addpullsubscription_agent para um assinante que faz parte de um AG, defina @subscriber para o nome do ouvinte AG. Se executar SQL Server versões 2016 (13.x) e anteriores, ou SQL Server 2017 (14.x) antes do 16, o procedimento armazenado executa-se sem devolver um erro, mas o parâmetro @subscriber na Replicação Distribution Agent não faz referência ao nome do ouvinte AG; O parâmetro é criado com o nome do servidor assinante onde o comando é executado. Para corrigir este problema, atualize manualmente o parâmetro Distribution Agent job@subscriber com o valor do nome do ouvinte AG.

[ @subscriber_db = ] N'subscriber_db'

O nome da base de dados de subscrição. @subscriber_db é sysname, com um padrão de NULL.

Note

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.

[ @subscriber_security_mode = ] subscriber_security_mode

O modo de segurança a usar ao ligar-se a um Assinante durante a sincronização. @subscriber_security_mode é int, com um padrão de NULL.

  • 0 especifica autenticação SQL Server
  • 1 especifica autenticação no Windows

Note

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts. O Distribution Agent liga-se sempre ao Assinante local usando a Autenticação Windows. Se for especificado um valor diferente de NULL ou 1 para este parâmetro, é devolvida uma mensagem de aviso.

[ @subscriber_login = ] N'subscriber_login'

O login do Assinante para usar ao ligar-se a um Assinante durante a sincronização. @subscriber_login é sysname, com um padrão de NULL.

Note

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts. Se for especificado um valor para este parâmetro, é devolvida uma mensagem de aviso, mas o valor é ignorado.

[ @subscriber_password = ] N'subscriber_password'

A palavra-passe do Subscritor. @subscriber_password é necessário se @subscriber_security_mode estiver definido para 0. @subscriber_password é sysname, com um padrão de NULL. Se for usada uma palavra-passe de assinante, ela é automaticamente encriptada.

Note

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts. Se for especificado um valor para este parâmetro, é devolvida uma mensagem de aviso, mas o valor é ignorado.

@distributor [ = ] N'distribuidor'

O nome do Distribuidor. @distributor é sysname, com um valor por defeito especificado por @publisher.

@distribution_db [ = ] N'distribution_db'

O nome do banco de dados de distribuição. @distribution_db é sysname, com um padrão de NULL.

[ @distributor_security_mode = ] distributor_security_mode

Note

Microsoft Entra ID era anteriormente conhecido como Azure Ative Directory (Azure AD).

O modo de segurança a usar ao ligar-se a um distribuidor ao sincronizar. @distributor_security_mode é int, com um padrão de 1. Os seguintes valores definem o modo de segurança:

  • 0 especifica autenticação SQL Server.
  • 1 especifica autenticação do Windows.
  • 2especifica a autenticação por palavra-passe Microsoft Entra a partir do SQL Server 2022 (16.x) 6.
  • 3especifica a autenticação integrada Microsoft Entra a partir do SQL Server 2022 (16.x) 6.
  • 4especifica a autenticação do token Microsoft Entra a partir do SQL Server 2022 (16.x) 6.

Importante

Quando possível, use a autenticação do Windows.

[ @distributor_login = ] N'distributor_login'

O login do Distribuidor para usar ao ligar a um Distribuidor ao sincronizar. @distributor_login é sysname, com um padrão de NULL. @distributor_login é necessário se @distributor_security_mode estiver definido para 0.

[ @distributor_password = ] N'distributor_password'

A palavra-passe do Distribuidor. @distributor_password é necessário se @distributor_security_mode estiver definido como 0. @distributor_password é sysname, com o padrão de NULL.

Importante

Não utilize uma palavra-passe em branco. Use uma senha forte. Quando possível, solicite que os usuários insiram credenciais de segurança em tempo de execução. Se você precisar armazenar credenciais em um arquivo de script, deverá proteger o arquivo para impedir o acesso não autorizado.

[ @optional_command_line = ] N'optional_command_line'

Um prompt de comandos opcional fornecido ao Distribution Agent. Por exemplo, -DefinitionFile C:\Distdef.txt ou -CommitBatchSize 10. @optional_command_line é nvarchar(4000), com o padrão de uma cadeia vazia.

[ @frequency_type = ] frequency_type

A frequência com que agendar o Distribution Agent. @frequency_type é int, e pode ser um dos seguintes valores.

Value Description
1 Uma vez
2 (padrão) A pedido
4 Diariamente
8 Semanalmente
16 Monthly
32 Parente mensal
64 Arranque automático
128 Recorrente

Note

Especificar um valor de 64 faz com que o Distribution Agent funcione em modo contínuo. Isto corresponde a definir o -Continuous parâmetro para o agente. Para obter mais informações, consulte Replication Distribution Agent.

[ @frequency_interval = ] frequency_interval

O valor a aplicar à frequência definida por @frequency_type. @frequency_interval é int, com um padrão de 1.

[ @frequency_relative_interval = ] frequency_relative_interval

A data do Agente de Distribuição. Este parâmetro é usado quando @frequency_type está definido como 32 (relativo mensal). @frequency_relative_interval é int, e pode ser um dos seguintes valores.

Value Description
1 (padrão) First
2 Second
4 Third
8 Fourth
16 Último

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

O fator de recorrência utilizado por @frequency_type. @frequency_recurrence_factor é int, com um padrão de 1.

[ @frequency_subday = ] frequency_subday

Especifica com que frequência reagendar durante o período definido. @frequency_subday é int, e pode ser um dos seguintes valores.

Value Description
1 (padrão) Uma vez
2 Second
4 Minuto
8 Hora

[ @frequency_subday_interval = ] frequency_subday_interval

O intervalo para @frequency_subday. @frequency_subday_interval é int, com um padrão de 1.

[ @active_start_time_of_day = ] active_start_time_of_day

A hora do dia em que o Agente de Distribuição é agendado pela primeira vez, formatado como HHmmss. @active_start_time_of_day é int, com um padrão de 0.

[ @active_end_time_of_day = ] active_end_time_of_day

A hora do dia em que o Agente de Distribuição deixa de ser agendado, formatada como HHmmss. @active_end_time_of_day é int, com um padrão de 0.

[ @active_start_date = ] active_start_date

A data em que o Agente de Distribuição é agendado pela primeira vez, formatada como yyyyMMdd. @active_start_date é int, com um padrão de 0.

[ @active_end_date = ] active_end_date

A data em que o Agente de Distribuição deixa de ser agendado, formatada como yyyyMMdd. @active_end_date é int, com um padrão de 0.

[ @distribution_jobid = ] distribution_jobid SAÍDA

O ID do Distribution Agent para este trabalho. @distribution_jobid é um OUTPUT parâmetro do tipo binary(16), com um padrão de NULL.

[ @encrypted_distributor_password = ] encrypted_distributor_password

@encrypted_distributor_password é bit, com um padrão de 0.

Note

Configurar @encrypted_distributor_password já não é suportado. Tentar definir este parâmetro de bit para 1 resultará num erro.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Especifica se a subscrição pode ser sincronizada através do Microsoft Synchronization Manager. @enabled_for_syncmgr é nvarchar(5), com um padrão de false.

  • Se false, a subscrição não está registada no Gestor de Sincronização.
  • Se truefor , a subscrição está registada no Gestor de Sincronização e pode ser sincronizada sem necessidade de iniciar o SQL Server Management Studio.

[ @ftp_address = ] N'ftp_address'

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.

[ @ftp_port = ] ftp_port

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.

[ @ftp_login = ] N'ftp_login'

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.

[ @ftp_password = ] N'ftp_password'

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Especifica a localização da pasta alternativa para o snapshot. @alt_snapshot_folder é nvarchar(255), com um padrão de NULL.

@working_directory [ = ] N'working_directory'

O nome do diretório de trabalho usado para armazenar dados e arquivos de esquema para a publicação. @working_directory é nvarchar(255), com um padrão de NULL. O nome deve ser especificado no formato UNC.

[ @use_ftp = ] N'use_ftp'

Especifica o uso do FTP em vez do protocolo regular para obter snapshots. @use_ftp é nvarchar(5), com um padrão de false.

[ @publication_type = ] publication_type

Especifica o tipo de replicação da publicação. @publication_type é minyint, com um padrão de 0.

  • Se 0, publicação é um tipo de transação.
  • Se 1, a publicação for um tipo snapshot.
  • Se 2, publicação é um tipo de fusão.

[ @dts_package_name = ] N'dts_package_name'

Especifica o nome do pacote DTS. @dts_package_name é sysname, com um padrão de NULL. Por exemplo, para especificar um pacote de DTSPub_Package, o parâmetro seria @dts_package_name = N'DTSPub_Package'.

[ @dts_package_password = ] N'dts_package_password'

Especifica a palavra-passe no pacote, caso exista. @dts_package_password é sysname, com um padrão de NULL, o que significa que não há palavra-passe no pacote.

Note

Deve especificar uma palavra-passe se @dts_package_name for especificada.

[ @dts_package_location = ] N'dts_package_location'

Especifica a localização da encomenda. @dts_package_location é nvarchar(12), com um padrão de subscriber. A localização do pacote pode ser distributor ou subscriber.

[ @reserved = ] N'reservado'

Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.

[ @offloadagent = ] N'agente de descarga'

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts. Se for especificado um valor para este parâmetro, é devolvida uma mensagem de aviso, mas o valor é ignorado. Definir @offloadagent para um valor diferente false de gera um erro.

[ @offloadserver = ] N'offloadserver'

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts. Se for especificado um valor para este parâmetro, é devolvida uma mensagem de aviso, mas o valor é ignorado. Definir @offloadserver para um valor diferente de false gera um erro.

[ @job_name = ] N'job_name'

O nome de um agente já existente. @job_name é sysname, com o padrão de NULL. Este parâmetro só é especificado quando a subscrição é sincronizada usando um trabalho existente em vez de um trabalho recém-criado (o padrão). Se não fores membro do servidor fixo de sysadmin , deves especificar @job_login e @job_password quando especificares @job_name.

[ @job_login = ] N'job_login'

O login da conta Windows com a qual o agente corre. @job_login é nvarchar(257), sem padrão. Esta conta Windows é sempre usada para ligações de agentes ao Assinante.

[ @job_password = ] N'job_password'

A palavra-passe da conta Windows com a qual o agente corre. @job_password é sysname, sem padrão.

Importante

Não utilize uma palavra-passe em branco. Use uma senha forte. Quando possível, solicite que os usuários insiram credenciais de segurança em tempo de execução. Se você precisar armazenar credenciais em um arquivo de script, deverá proteger o arquivo para impedir o acesso não autorizado.

[ @job_security_mode = ] job_security_mode

Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Remarks

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

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_agent.