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 um novo trabalho de agente usado para agendar a sincronização de uma subscrição pull com uma publicação de fusão. Este procedimento armazenado é executado no Assinante na base de dados de subscrição.
Transact-SQL convenções de sintaxe
Syntax
sys.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' ]
[ ; ]
Arguments
[ @name = ] N'nome'
O nome do agente.
@name é sysname, com um padrão de NULL.
@publisher [ = ] N'editor'
O nome do servidor Publisher. @publisher é sysname, sem padrão.
[ @publisher_db = ] N'publisher_db'
O nome do banco de dados do Publisher. @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 usar ao ligar-se a um Publisher durante a sincronização.
@publisher_security_mode é int, com um padrão de 1. Os seguintes valores definem o modo de segurança:
-
0especifica autenticação SQL Server. -
1especifica autenticação do Windows. -
2especifica autenticação por palavra-passe Microsoft Entra, começando com SQL Server 2022 (16.x) 6. -
3especifica autenticação integrada 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 login para usar ao ligar a um Publisher ao sincronizar.
@publisher_login é sysname, com um padrão de NULL.
[ @publisher_password = ] N'publisher_password'
A palavra-passe usada ao ligar-se ao Publisher.
@publisher_password é sysname, com um 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.
[ @publisher_encrypted_password = ] publisher_encrypted_password
Configurar @publisher_encrypted_password já não é suportado. Tentar definir este parâmetro de bit resulta 1 num erro.
[ @subscriber = ] N'assinante'
O nome do Assinante.
@subscriber é sysname, com um padrão de NULL.
[ @subscriber_db = ] N'subscriber_db'
O nome da base de dados de subscrição.
@subscriber_db é sysname, com um padrão de NULL.
[ @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 1. Se 0, especifica a autenticação do SQL Server. Se 1, especifica a autenticação do Windows.
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_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.
@subscriber_login é necessário se @subscriber_security_mode estiver definido para 0.
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 assinante para a Autenticação do SQL Server.
@subscriber_password é sysname, com um padrão de NULL.
@subscriber_password é necessário se @subscriber_security_mode estiver definido para 0.
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 o padrão @publisher; ou seja, o Publisher é também o Distribuidor.
[ @distributor_security_mode = ] distributor_security_mode
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:
-
0especifica autenticação SQL Server. -
1especifica autenticação do Windows. -
2especifica autenticação por palavra-passe Microsoft Entra, começando com SQL Server 2022 (16.x) 6. -
3especifica autenticação integrada Microsoft Entra, começando com SQL Server 2022 (16.x) 6. -
4especifica autenticação de 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 é sysname, com o padrão de NULL.
@distributor_password é necessário se @distributor_security_mode estiver definido como 0.
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.
@encrypted_password [ = ] encrypted_password
Configurar @encrypted_password já não é suportado. Tentar definir este parâmetro de bit resulta 1 num erro.
[ @frequency_type = ] frequency_type
Um valor que indica quando o Merge Agent é executado. @frequency_type é int, e pode ser um desses valores.
| Value | Description |
|---|---|
1 |
Uma vez |
2 |
A pedido |
4 |
Diariamente |
8 |
Semanalmente |
16 |
Monthly |
32 |
Parente mensal |
64 |
Arranque automático |
128 |
Recorrente |
NULL (padrão) |
Note
Especificar um valor de 64 faz com que o Merge Agent funcione em modo contínuo. Isto corresponde a definir o -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 Merge Agent é executado.
@frequency_interval é int, com um padrão de NULL, e pode ser um destes valores.
| Value | Description |
|---|---|
1 |
Domingo |
2 |
Segunda-feira |
3 |
Tuesday |
4 |
Quarta-feira |
5 |
Quinta-feira |
6 |
Sexta-feira |
7 |
Sábado |
8 |
Dia |
9 |
Dias úteis |
10 |
Dias de fim de semana |
NULL (padrão) |
[ @frequency_relative_interval = ] frequency_relative_interval
A data do Merge Agent. Este parâmetro é usado quando @frequency_type está definido como 32 (relativo mensal).
@frequency_relative_interval é int, e pode ser um desses valores.
| Value | Description |
|---|---|
1 |
First |
2 |
Second |
4 |
Third |
8 |
Fourth |
16 |
Último |
NULL (padrão) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
O fator de recorrência utilizado 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.
| Value | Description |
|---|---|
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, formatada 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, formatada 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 agendada, formatada como yyyyMMdd.
@active_end_date é int, com um padrão de NULL.
[ @optional_command_line = ] N'optional_command_line'
Um prompt de comandos opcional fornecido ao Merge Agent. @optional_command_line é nvarchar(255), com o padrão de uma cadeia vazia.
Pode ser usado para fornecer parâmetros adicionais ao Merge Agent, como no exemplo seguinte que aumenta o tempo de espera padrão da consulta para 600 segundos:
@optional_command_line = N'-QueryTimeOut 600'
[ @merge_jobid = ] merge_jobid SAÍDA
O parâmetro de saída para o ID do trabalho.
@merge_jobid é um OUTPUT parâmetro do tipo binary(16), com um padrão de NULL.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Especifica se a subscrição pode ser sincronizada através do Windows 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 o local de onde recolher os ficheiros snapshot.
@alt_snapshot_folder é nvarchar(255), com um padrão de NULL. Se NULL, os ficheiros snapshot serão recolhidos da localização padrão especificada pelo Publisher.
@working_directory [ = ] N'working_directory'
O nome do diretório de trabalho é usado para armazenar temporariamente dados e ficheiros de esquema para a publicação quando o FTP é usado para transferir ficheiros snapshot.
@working_directory é nvarchar(255), com um padrão de NULL.
[ @use_ftp = ] N'use_ftp'
Especifica o uso de FTP em vez do protocolo típico para recuperar snapshots.
@use_ftp é nvarchar(5), com um padrão de false.
[ @reserved = ] N'reservado'
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
[ @use_interactive_resolver = ] N'use_interactive_resolver'
Utiliza resolver interativo para resolver conflitos em todos os artigos que permitam resolução interativa.
@use_interactive_resolver é nvarchar(5), com um padrão de false.
[ @offloadagent = ] N'agente de descarga'
Note
Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts. Definir remote_agent_activation para um valor diferente de false gera um erro.
[ @offloadserver = ] N'offloadserver'
Note
Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts. Definir remote_agent_server_name para qualquer valor não NULL 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 será 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.
[ @dynamic_snapshot_location = ] N'dynamic_snapshot_location'
O caminho para a pasta de onde os ficheiros snapshot serão lidos, caso se utilize um snapshot de dados filtrado.
@dynamic_snapshot_location é nvarchar(260), com um padrão de NULL. Para mais informações, veja Filtros Parametrizados - Filtros de Linha Parametrizados.
[ @use_web_sync = ] use_web_sync
Indica que a sincronização Web está ativada.
@use_web_sync é bit, com um padrão de 0.
1 especifica que a subscrição pull pode ser sincronizada pela internet usando HTTP.
[ @internet_url = ] N'internet_url'
A localização do ouvinte de replicação (REPLISAPI.DLL) para sincronização Web.
@internet_url é nvarchar(260), com um padrão de NULL.
@internet_url é uma URL totalmente qualificada, no formato http://server.domain.com/directory/replisapi.dll. Se o servidor estiver configurado para ouvir numa porta diferente da porta 80, o número da porta também deve ser fornecido no formato http://server.domain.com:<portnumber>/directory/replisapi.dll, onde <portnumber> representa a porta.
[ @internet_login = ] N'internet_login'
O login que o Merge Agent utiliza ao ligar-se ao servidor Web que hospeda a sincronização Web usando HTTP Basic Authentication.
@internet_login é sysname, com um padrão de NULL.
[ @internet_password = ] N'internet_password'
A palavra-passe que o Merge Agent utiliza ao ligar-se ao servidor Web que está a alojar a sincronização Web usando HTTP Basic Authentication.
@internet_password é nvarchar(524), com um padrão de NULL.
Importante
Não utilize uma palavra-passe em branco. Use uma senha forte.
[ @internet_security_mode = ] internet_security_mode
O método de autenticação utilizado pelo Merge Agent ao ligar-se ao servidor Web durante a sincronização Web usando HTTPS. @internet_security_mode é int, e pode ser um desses valores.
| Value | Description |
|---|---|
0 |
É utilizada a Autenticação Básica. |
1 (padrão) |
É utilizada a Autenticação Integrada do Windows. |
Note
Recomendamos a utilização de Autenticação Básica com sincronização Web. Para usar a sincronização Web, deve criar uma ligação TLS ao servidor Web. Para mais informações, consulte Configurar Sincronização Web.
[ @internet_timeout = ] internet_timeout
O tempo, em segundos, antes de um pedido de sincronização Web expirar.
@internet_timeout é inteligência, com um padrão de 300 segundos.
[ @hostname = ] N'nome de anfitrião'
Sobrepõe o valor de HOST_NAME() quando esta 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 login da conta Windows com a qual o agente corre.
@job_login é nvarchar(257), com um padrão de NULL. Esta conta Windows é sempre usada para ligações de agente ao Assinante e para ligações ao Distribuidor e Publisher ao utilizar autenticação integrada do Windows.
[ @job_password = ] N'job_password'
A palavra-passe da conta Windows com a qual o agente corre.
@job_password é sysname, com um padrão de NULL.
Caution
Não guarde a informação de autenticação em ficheiros de script. Para a melhor segurança, os nomes de login e palavras-passe devem ser fornecidos em tempo de execução.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Remarks
sp_addmergepullsubscription_agent é usado na replicação de fusão e utiliza funcionalidades semelhantes às sp_addpullsubscription_agent.
Para um exemplo de como especificar corretamente as definições de segurança ao executar sp_addmergepullsubscription_agent, veja Criar uma Subscrição Pull.
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;
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
Permissions
Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_addmergepullsubscription_agent.