sp_addpullsubscription_agent (Transact-SQL)

Aplica-se a:yes SQL Server (todas as versões com suporte) YesInstância Gerenciada de SQL do Azure

Adiciona um novo trabalho agendado de agente usado para sincronizar uma assinatura pull com uma publicação transacional. Esse procedimento armazenado é executado no Assinante no banco de dados de assinatura.

Topic link iconConvenções de sintaxe do Transact-SQL

Sintaxe

  
sp_addpullsubscription_agent [ @publisher = ] 'publisher'  
    [ , [ @publisher_db = ] 'publisher_db' ]          , [ @publication = ] 'publication'  
    [ , [ @subscriber = ] 'subscriber' ]  
    [ , [ @subscriber_db = ] 'subscriber_db' ]  
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]  
    [ , [ @subscriber_login = ] 'subscriber_login' ]  
    [ , [ @subscriber_password = ] 'subscriber_password' ]  
    [ , [ @distributor = ] 'distributor' ]  
    [ , [ @distribution_db = ] 'distribution_db' ]  
    [ , [ @distributor_security_mode = ] distributor_security_mode ]  
    [ , [ @distributor_login = ] 'distributor_login' ]  
    [ , [ @distributor_password = ] 'distributor_password' ]  
    [ , [ @optional_command_line = ] '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 = ] 'enabled_for_syncmgr' ]  
    [ , [ @ftp_address = ] 'ftp_address' ]  
    [ , [ @ftp_port = ] ftp_port ]  
    [ , [ @ftp_login = ] 'ftp_login' ]  
    [ , [ @ftp_password = ] 'ftp_password' ]  
    [ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]  
    [ , [ @working_directory = ] 'working_directory' ]  
    [ , [ @use_ftp = ] 'use_ftp' ]  
    [ , [ @publication_type = ] publication_type ]  
    [ , [ @dts_package_name = ] 'dts_package_name' ]  
    [ , [ @dts_package_password = ] 'dts_package_password' ]  
    [ , [ @dts_package_location = ] 'dts_package_location' ]  
    [ , [ @reserved = ] 'reserved' ]  
    [ , [ @offloadagent = ] 'remote_agent_activation' ]  
    [ , [ @offloadserver = ] 'remote_agent_server_name']  
    [ , [ @job_name = ] 'job_name' ]  
    [ , [ @job_login = ] 'job_login' ]   
    [ , [ @job_password = ] 'job_password' ]   

Argumentos

[ @publisher = ] 'publisher'É o nome do Publisher. 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 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 a SQL Server 2019.

[ @publisher_db = ] 'publisher_db'_É o nome do banco de dados Publisher. publisher_db é sysname, com um valor padrão de NULL. publisher_db é ignorado pelo Oracle Publishers.

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

[ @subscriber = ] 'subscriber' É o nome da instância do Assinante ou o nome do ouvinte do AG se o banco de dados do assinante estiver em um grupo de disponibilidade. assinante é sysname, com um padrão de NULL.

Observação

Ao executar sp_addpullsubscription_agent para um assinante que faz parte de um grupo de disponibilidade Always On, é necessário passar o parâmetro @Subscriber como o nome do ouvinte do AG. Se você estiver executando SQL Server 2016 (13.x) e versões anteriores, ou SQL Server 2017 (14.x) antes da CU16, o procedimento armazenado será executado sem retornar um erro, mas o parâmetro @Subscriber no trabalho Agente de Distribuição não fará referência ao nome do ouvinte do AG; o parâmetro será criado com o nome do servidor assinante no qual o comando é executado. Para alterar esse problema, atualize manualmente o trabalho de Agente de Distribuição (Agente de Distribuição trabalho@Subscriber parâmetro com o valor do nome do Ouvinte do AG.

Observação

Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores de scripts.

[ @subscriber_db = ] 'subscriber_db' É o nome do banco de dados de assinatura. subscriber_db é sysname, com um padrão de NULL.

Observação

Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores de scripts.

[ @subscriber_security_mode = ] subscriber_security_mode É o modo de segurança a ser usado ao se conectar a um Assinante ao sincronizar. subscriber_security_mode é int, com um padrão de NULL. 0 especifica SQL Server Autenticação. 1 especifica Windows Autenticação.

Observação

Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores de scripts. O Agente de Distribuição sempre conecta ao Assinante local usando a Autenticação do Windows. Se um valor diferente de NULL ou 1 for especificado para esse parâmetro, uma mensagem de aviso será retornada.

[ @subscriber_login = ] 'subscriber_login' É o logon do Assinante a ser usado ao se conectar a um Assinante ao sincronizar. subscriber_login é sysname, com um padrão de NULL.

Observação

Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores de scripts. Se um valor for especificado para esse parâmetro, uma mensagem de aviso será retornada, mas o valor será ignorado.

[ @subscriber_password = ] 'subscriber_password' É a senha do Assinante. subscriber_password será necessário se subscriber_security_mode estiver definido como 0. subscriber_password é sysname, com um padrão de NULL. Se uma senha de assinante for usada, será criptografada automaticamente.

Observação

Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores de scripts. Se um valor for especificado para esse parâmetro, uma mensagem de aviso será retornada, mas o valor será ignorado.

[ @distributor = ] 'distributor' É o nome do Distribuidor. distribuidor é sysname, com um padrão do valor especificado pelo publicador.

[ @distribution_db = ] 'distribution_db' É o nome do banco de dados de distribuição. distribution_db é sysname, com um valor padrão de NULL.

[ @distributor_security_mode = ] distributor_security_mode É o modo de segurança a ser usado ao se conectar a um Distribuidor ao sincronizar. distributor_security_mode é int, com um padrão de 1. 0 especifica SQL Server Autenticação. 1 especifica Windows Autenticação.

Importante

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

[ @distributor_login = ] 'distributor_login' É o logon do Distribuidor a ser usado ao se conectar a um Distribuidor ao sincronizar. distributor_login será necessário se distributor_security_mode estiver definido como 0. distributor_login é sysname, com um padrão de NULL.

[ @distributor_password = ] 'distributor_password' É a senha do Distribuidor. distributor_password será necessário se distributor_security_mode estiver definido como 0. distributor_password é sysname, com um padrão de NULL.

Importante

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

[ @optional_command_line = ] 'optional_command_line'É um prompt de comando opcional fornecido ao Agente de Distribuição. Por exemplo, -DefinitionFile C:\Distdef.txt ou -CommitBatchSize 10. optional_command_line é nvarchar(4000), com um padrão de cadeia de caracteres vazia.

[ @frequency_type = ] frequency_typeÉ a frequência com a qual agendar o Agente de Distribuição. frequency_type é int e pode ser um dos valores a seguir.

Valor Descrição
1 Uma vez
2 (padrão) Sob demanda
4 Diariamente
8 Semanalmente
16 Mensal
32 Relativo ao mês
64 Iniciar automaticamente
128 Recorrente

Observação

Especificar um valor de 64 faz com que o Agente de Distribuição seja executado no modo contínuo. Isso corresponde à configuração do parâmetro -Continuous para o agente. Para obter mais informações, consulte Replication Distribution Agent.

[ @frequency_interval = ] frequency_interval É o valor a ser aplicado à 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. Esse parâmetro é usado quando frequency_type é definido como 32 (relativo mensal). frequency_relative_interval é int e pode ser um dos valores a seguir.

Valor Descrição
1 (padrão) Primeiro
2 Segundo
4 Terceiro
8 Quarto
16 Último

[ @frequency_recurrence_factor = ] frequency_recurrence_factor É o fator de recorrência usado por frequency_type. frequency_recurrence_factor é int, com um padrão de 1.

[ @frequency_subday = ] frequency_subday É com que frequência reagendar durante o período definido. frequency_subday é int e pode ser um dos valores a seguir.

Valor Descrição
1 (padrão) Uma vez
2 Segundo
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 a Agente de Distribuição é agendada pela primeira vez, formatada 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 a Agente de Distribuição deixa de ser agendada, 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 a Agente de Distribuição é agendada 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 a Agente de Distribuição deixa de ser agendada, formatada como YYYYMMDD. active_end_date é int, com um padrão de 0.

[ @distribution_jobid = ] _distribution_jobidOUTPUTÉ a ID do Agente de Distribuição deste trabalho. distribution_jobid é binário(16) com um padrão de NULL e é um parâmetro OUTPUT.

[ @encrypted_distributor_password = ] encrypted_distributor_password Não há mais suporte para a configuração encrypted_distributor_password. A tentativa de definir esse parâmetro de bit como 1 resultará em um erro.

[ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' É se a assinatura pode ser sincronizada por meio do Microsoft Synchronization Manager. enabled_for_syncmgr é nvarchar(5), com um padrão de FALSE. Se for false, a assinatura não será registrada no Gerenciador de Sincronização. Se for true, a assinatura será registrada no Gerenciador de Sincronização e poderá ser sincronizada sem iniciar SQL Server Management Studio.

[ @ftp_address = ] 'ftp_address' Somente para compatibilidade com versões anteriores.

[ @ftp_port = ] ftp_port Somente para compatibilidade com versões anteriores.

[ @ftp_login = ] 'ftp_login' Somente para compatibilidade com versões anteriores.

[ @ftp_password = ] 'ftp_password' Somente para compatibilidade com versões anteriores.

[ @alt_snapshot_folder = ] 'alternate_snapshot_folder'_ Especifica o local da pasta alternativa para o instantâneo. alternate_snapshot_folder é nvarchar(255), com um padrão de NULL.

[ @working_directory = ] 'working_director' É 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 = ] 'use_ftp' Especifica o uso de FTP em vez do protocolo regular para recuperar instantâneos. 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 é um minúsculo com um padrão de 0. Se 0, a publicação é um tipo de transação. Se 1, a publicação é um tipo de instantâneo. Se 2, a publicação é um tipo de mesclagem.

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

[ @dts_package_password = ] 'dts_package_password' Especifica a senha no pacote, se houver uma. dts_package_password é sysname com um padrão de NULL, o que significa que uma senha não está no pacote.

Observação

Você deve especificar uma senha se dts_package_name for especificado.

[ @dts_package_location = ] 'dts_package_location' Especifica o local do pacote. dts_package_location é um nvarchar(12), com um padrão de assinante. O local do pacote pode ser distribuidor ou assinante.

[ @reserved = ] 'reserved'

Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida.

[ @offloadagent = ] 'remote_agent_activation'

Observação

A ativação do agente remoto foi preterida e não tem mais suporte. Esse parâmetro tem suporte somente para manter a compatibilidade com versões anteriores de scripts. Definir remote_agent_activation para um valor diferente de false gerará um erro.

[ @offloadserver = ] 'remote_agent_server_name'

Observação

A ativação do agente remoto foi preterida e não tem mais suporte. Esse parâmetro tem suporte somente para manter a compatibilidade com versões anteriores de scripts. Definir remote_agent_server_name para qualquer valor não NULL gerará um erro.

[ @job_name = ] 'job_name' É o nome de um trabalho de agente existente. job_name é sysname, com um valor padrão de NULL. Esse parâmetro só é especificado quando a assinatura será sincronizada usando um trabalho existente em vez de um trabalho recém-criado (o padrão). Se você não for membro da função de servidor fixa sysadmin , deverá especificar job_login e job_password quando especificar job_name.

[ @job_login = ] 'job_login'É o logon da conta Windows na qual o agente é executado. job_login é nvarchar(257), sem padrão. Essa conta do Windows sempre é usada para conexões doe agente com o Assinante.

[ @job_password = ] 'job_password'É a senha da conta Windows na qual o agente é executado. job_password é sysname, sem padrão.

Importante

Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se for necessário armazenar credenciais em um arquivo de script, você deverá proteger o arquivo para impedir acesso não autorizado.

Valores do código de retorno

0 (êxito) ou 1 (falha)

Comentários

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

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

Consulte Também

Criar uma assinatura pull
Assinar publicações
sp_addpullsubscription (Transact-SQL)
sp_change_subscription_properties (Transact-SQL)
sp_droppullsubscription (Transact-SQL)
sp_helppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)