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