Partilhar via


sp_addmergepullsubscription_agent (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Adiciona um novo trabalho de agente para agendar a sincronização de uma assinatura pull com uma publicação de mesclagem. Esse procedimento armazenado é executado no Assinante no banco de dados de assinatura.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_addmergepullsubscription_agent
    [ [ @name = ] N'name' ]
    , [ @publisher = ] N'publisher'
    , [ @publisher_db = ] N'publisher_db'
    , [ @publication = ] N'publication'
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @publisher_encrypted_password = ] publisher_encrypted_password ]
    [ , [ @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' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @encrypted_password = ] encrypted_password ]
    [ , [ @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 ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @merge_jobid = ] merge_jobid OUTPUT ]
    [ , [ @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' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @dynamic_snapshot_location = ] N'dynamic_snapshot_location' ]
    [ , [ @use_web_sync = ] use_web_sync ]
    [ , [ @internet_url = ] N'internet_url' ]
    [ , [ @internet_login = ] N'internet_login' ]
    [ , [ @internet_password = ] N'internet_password' ]
    [ , [ @internet_security_mode = ] internet_security_mode ]
    [ , [ @internet_timeout = ] internet_timeout ]
    [ , [ @hostname = ] N'hostname' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

Argumentos

@name [ = ] N'nome'

O nome do agente. @name é sysname, com um padrão de NULL.

@publisher [ = ] N'editor'

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

@publisher_db [ = ] N'publisher_db'

O nome do banco de dados Publicador. @publisher_db é sysname, sem padrão.

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

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

@publisher_security_mode [ = ] publisher_security_mode

O modo de segurança a ser usado ao se conectar a um Publicador durante a sincronização. @publisher_security_mode é int, com um padrão de 1. Os seguintes valores definem o modo de segurança:

  • 0 especifica a autenticação do SQL Server.
  • 1 especifica a autenticação do Windows.
  • 2 especifica a autenticação de senha do Microsoft Entra, começando com SQL Server 2022 (16.x) 6.
  • 3 especifica a autenticação integrada do Microsoft Entra, começando com SQL Server 2022 (16.x) 6.

Importante

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

@publisher_login [ = ] N'publisher_login'

O logon a ser usado ao se conectar a um Publicador ao sincronizar. @publisher_login é sysname, com um padrão de NULL.

@publisher_password [ = ] N'publisher_password'

A senha usada ao se conectar ao Publicador. @publisher_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.

@publisher_encrypted_password [ = ] publisher_encrypted_password

A configuração @publisher_encrypted_password não é mais suportada. A tentativa de definir esse parâmetro de bit para 1 resulta em um erro.

@subscriber [ = ] N'assinante'

O nome do Assinante. @subscriber é sysname, com um padrão de NULL.

@subscriber_db [ = ] N'subscriber_db'

O nome do banco de dados de assinatura. @subscriber_db é sysname, com um padrão de NULL.

@subscriber_security_mode [ = ] subscriber_security_mode

O modo de segurança a ser usado ao se conectar a um Assinante durante a sincronização. @subscriber_security_mode é int, com um padrão de 1. Se 0, especifica a autenticação do SQL Server. Se 1, especifica a Autenticação do Windows.

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_login [ = ] N'subscriber_login'

O login do Assinante a ser usado ao se conectar a um Assinante ao sincronizar. @subscriber_login é sysname, com um padrão de NULL. @subscriber_login é necessário se subscriber_security_mode estiver definido como 0.

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 [ = ] N'subscriber_password'

A senha do Assinante para Autenticação do SQL Server. @subscriber_password é sysname, com um padrão de NULL. @subscriber_password é necessário se @subscriber_security_mode estiver definido como 0.

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 [ = ] N'distribuidor'

O nome do Distribuidor. @distributor é sysname, com um padrão de @publisher; ou seja, o Publicador também é o Distribuidor.

@distributor_security_mode [ = ] distributor_security_mode

O modo de segurança a ser usado ao se conectar a um Distribuidor durante a sincronização. @distributor_security_mode é int, com um padrão de 1. Os seguintes valores definem o modo de segurança:

  • 0 especifica a autenticação do SQL Server.
  • 1 especifica a autenticação do Windows.
  • 2 especifica a autenticação de senha do Microsoft Entra, começando com SQL Server 2022 (16.x) 6.
  • 3 especifica a autenticação integrada do Microsoft Entra, começando com SQL Server 2022 (16.x) 6.
  • 4 especifica a autenticação de token do Microsoft Entra, começando com 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 a ser usado ao se conectar a um Distribuidor durante a sincronização. @distributor_login é sysname, com um padrão de NULL. @distributor_login é necessário se @distributor_security_mode estiver definido como 0.

@distributor_password [ = ] N'distributor_password'

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

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.

@encrypted_password [ = ] encrypted_password

Não há mais suporte para a configuração @encrypted_password . A tentativa de definir esse parâmetro de bit para 1 resulta em um erro.

@frequency_type [ = ] frequency_type

Um valor que indica quando o Merge Agent é executado. @frequency_type é int e pode ser um desses valores.

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

Observação

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

@frequency_interval [ = ] frequency_interval

O dia ou dias em que o Agente de Mesclagem é executado. @frequency_interval é int, com um padrão de NULL, e pode ser um desses valores.

Valor Descrição
1 Domingo
2 Segunda-feira
3 Terça-feira
4 Quarta-feira
5 Quinta-feira
6 Sexta-feira
7 Sábado
8 Dia
9 Dias da semana
10 Dias de fim de semana
NULL (padrão)

@frequency_relative_interval [ = ] frequency_relative_interval

A data do Merge Agent. Esse parâmetro é usado quando @frequency_type é definido como 32 (relativo mensal). @frequency_relative_interval é int e pode ser um desses valores.

Valor Descrição
1 First
2 Segundo
4 Terceiro
8 Quarto
16 Last
NULL (padrão)

@frequency_recurrence_factor [ = ] frequency_recurrence_factor

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

@frequency_subday [ = ] frequency_subday

Com que frequência reagendar durante o período definido. @frequency_subday é int e pode ser um desses valores.

Valor Descrição
1 Uma vez
2 Second
4 Minuto
8 Hora
NULL (padrão)

@frequency_subday_interval [ = ] frequency_subday_interval

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

@active_start_time_of_day [ = ] active_start_time_of_day

A hora do dia em que o Merge Agent é agendado pela primeira vez, formatado como HHmmss. @active_start_time_of_day é int, com um padrão de NULL.

@active_end_time_of_day [ = ] active_end_time_of_day

A hora do dia em que o Merge Agent deixa de ser agendado, formatado como HHmmss. @active_end_time_of_day é int, com um padrão de NULL.

@active_start_date [ = ] active_start_date

A data em que o Merge Agent é agendado pela primeira vez, formatado como yyyyMMdd. @active_start_date é int, com um padrão de NULL.

@active_end_date [ = ] active_end_date

A data em que o Merge Agent deixa de ser agendado, formatado como yyyyMMdd. @active_end_date é int, com um padrão de NULL.

@optional_command_line [ = ] N'optional_command_line'

Um prompt de comando opcional fornecido ao Merge Agent. @optional_command_line é nvarchar(255), com um padrão de uma string vazia.

Pode ser usado para fornecer parâmetros adicionais ao Agente de Mesclagem, como no exemplo seguinte que aumenta o tempo limite de consulta padrão para 600 segundos:

@optional_command_line = N'-QueryTimeOut 600'

@merge_jobid [ = ] merge_jobid SAÍDA

O parâmetro de saída para a ID do trabalho. @merge_jobid é um parâmetro OUTPUT do tipo binary(16), com um padrão de NULL.

@enabled_for_syncmgr [ = ] N'enabled_for_syncmgr'

Especifica se a assinatura pode ser sincronizada pelo Gerenciador de Sincronização do Windows. @enabled_for_syncmgr é nvarchar(5), com um padrão de false. Se false, a assinatura não está registrada no Gerenciador de Sincronização. Se true, a assinatura é registrada no Gerenciador de Sincronização e pode ser sincronizada sem iniciar o SQL Server Management Studio.

@ftp_address [ = ] N'ftp_address'

Somente para compatibilidade com versões anteriores.

@ftp_port [ = ] ftp_port

Somente para compatibilidade com versões anteriores.

@ftp_login [ = ] N'ftp_login'

Somente para compatibilidade com versões anteriores.

@ftp_password [ = ] N'ftp_password'

Somente para compatibilidade com versões anteriores.

@alt_snapshot_folder [ = ] N'alt_snapshot_folder'

Especifica o local do qual retirar os arquivos de instantâneo. @alt_snapshot_folder é nvarchar(255), com um padrão de NULL. Se NULL, os arquivos de instantâneo serão selecionados do local padrão especificado pelo Publicador.

@working_directory [ = ] N'working_directory'

O nome do diretório de trabalho usado para armazenar temporariamente dados e arquivos de esquema para a publicação quando o FTP é usado para transferir arquivos de instantâneo. @working_directory é nvarchar(255), com um padrão de NULL.

@use_ftp [ = ] N'use_ftp'

Especifica o uso do FTP, em vez do protocolo típico para recuperar instantâneos. @use_ftp é nvarchar(5), com um padrão de false.

@reserved [ = ] N'reservado'

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

@use_interactive_resolver [ = ] N'use_interactive_resolver'

Usa o resolvedor interativo para resolver conflitos para todos os artigos que permitem resolução interativa. @use_interactive_resolver é nvarchar(5), com um padrão de false.

@offloadagent [ = ] N'offloadagent'

Observação

Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores de scripts. Definir remote_agent_activation para um valor diferente de false gera um erro.

@offloadserver [ = ] N'offloadserver'

Observação

Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores de scripts. Definir remote_agent_server_name para qualquer valor não NULL gerará um erro.

@job_name [ = ] N'job_name'

O nome de um trabalho de agente existente. @job_name é sysname, com um 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 ao especificar @job_name.

@dynamic_snapshot_location [ = ] N'dynamic_snapshot_location'

O caminho para a pasta de onde os arquivos de instantâneo serão lidos se um instantâneo de dados filtrado for usado. @dynamic_snapshot_location é nvarchar(260), com um padrão de NULL. Para obter mais informações, consulte Filtros com parâmetros - Filtros de linha com parâmetros.

@use_web_sync [ = ] use_web_sync

Indica que a sincronização da Web está habilitada. @use_web_sync é bit, com um padrão de 0. 1 especifica que a assinatura pull pode ser sincronizada pela Internet usando HTTP.

@internet_url [ = ] N'internet_url'

O local do ouvinte de replicação (REPLISAPI.DLL) para sincronização da Web. @internet_url é nvarchar(260), com um padrão de NULL. @internet_url é um URL totalmente qualificado, no formato http://server.domain.com/directory/replisapi.dll. Se o servidor for configurado para ouvir em uma porta diferente da porta 80, o número da porta também deverá ser fornecido no formato http://server.domain.com:<portnumber>/directory/replisapi.dll, onde <portnumber> representa a porta.

@internet_login [ = ] N'internet_login'

O logon que o Merge Agent usa ao se conectar ao servidor Web que está hospedando a sincronização da Web usando a Autenticação Básica HTTP. @internet_login é sysname, com um padrão de NULL.

@internet_password [ = ] N'internet_password'

A senha que o Merge Agent usa ao se conectar ao servidor Web que está hospedando a sincronização da Web usando a Autenticação Básica HTTP. @internet_password é nvarchar(524), com um padrão de NULL.

Importante

Não use uma senha em branco. Use uma senha forte.

@internet_security_mode [ = ] internet_security_mode

O método de autenticação usado pelo Merge Agent ao se conectar ao servidor Web durante a sincronização da Web usando HTTPS. @internet_security_mode é int e pode ser um desses valores.

Valor Descrição
0 Autenticação Básica é usada.
1 (padrão) Autenticação Integrada do Windows é usada.

Observação

Recomendamos o uso da Autenticação Básica com sincronização da Web. Para usar a sincronização da Web, você deve fazer uma conexão TLS com o servidor Web. Para obter mais informações, consulte Configurar sincronização da Web.

@internet_timeout [ = ] internet_timeout

O período de tempo, em segundos, antes que uma solicitação de sincronização da Web expire. @internet_timeout é int, com um padrão de 300 segundos.

@hostname [ = ] N'nome do host'

Substitui o valor de HOST_NAME() quando essa função é usada na WHERE cláusula de um filtro parametrizado. @hostname é sysname, com um padrão de NULL.

@job_login [ = ] N'job_login'

O logon da conta do Windows sob a qual o agente é executado. @job_login é nvarchar(257), com um padrão de NULL. Essa conta do Windows é sempre usada para conexões do agente com o Assinante e para conexões com o Distribuidor e o Publicador ao usar a Autenticação Integrada do Windows.

@job_password [ = ] N'job_password'

A senha da conta do Windows sob a qual o agente é executado. @job_password é sysname, com um padrão de NULL.

Cuidado

Não armazene informações de autenticação em arquivos de script. Para melhor segurança, nomes de logon e senhas devem ser fornecidos em runtime.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_addmergepullsubscription_agent é usado na replicação de mesclagem e usa funcionalidade semelhante ao sp_addpullsubscription_agent.

Para obter um exemplo de como especificar corretamente as configurações de segurança ao executar sp_addmergepullsubscription_agento , consulte Criar uma assinatura pull.

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;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password),
  @hostname = @hostname;
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_addmergepullsubscription_agent.