sys.sp_addmergepushsubscription_agent (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Adiciona um novo job de agente usado para agendar a sincronização de uma subscrição push com uma publicação de fusão. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.

Importante

Ao configurar um Publisher com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, incluindo @job_login e @job_password, são enviados ao Distribuidor em texto simples. Deve encriptar a ligação entre o Publisher e o seu Distribuidor remoto antes de executar este procedimento armazenado. Para obter mais informações, consulte Configurar o Mecanismo de Banco de Dados do SQL Server para criptografar conexões.

Transact-SQL convenções de sintaxe

Note

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

Syntax

sys.sp_addmergepushsubscription_agent
    [ @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' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @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 ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ ; ]

Arguments

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

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

[ @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 é smallint, 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 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.

[ @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.

[ @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. Se for usada uma palavra-passe de assinante, ela é automaticamente encriptada.

Importante

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_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 é smallint, 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 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.

[ @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.

[ @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 agentes ao Distribuidor e para ligações ao Subscritor e ao Publisher quando se utiliza 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, sem padrão.

Importante

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

[ @frequency_type = ] frequency_type

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

Value Description
1 Uma vez
2 A pedido
4 Diariamente
8 Weekly
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

Os dias em que o Merge Agent funciona. @frequency_interval é int, e pode ser um dos seguintes 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 dos seguintes valores.

Value Description
1 First
2 Second
4 Third
8 Quarto
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 0.

[ @frequency_subday = ] frequency_subday

Com que frequência reagendar durante o período definido. @frequency_subday é int, e pode ser um dos seguintes 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 0.

[ @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 235959.

[ @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 0.

[ @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 99991231.

[ @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.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

sp_addmergepushsubscription_agent é usado na replicação de fusão e utiliza funcionalidades semelhantes às sp_addpushsubscription_agent.

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

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks2022];
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @hostname = @hostname;

--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @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_addmergepushsubscription_agent.