Partilhar via


sp_addmergepushsubscription_agent (Transact-SQL)

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

Adiciona um novo trabalho de agente para agendar sincronização de uma assinatura push para uma publicação de mesclagem. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Importante

Ao configurar um Publicador com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, incluindo @job_login e @job_password, são enviados ao Distribuidor como texto sem formatação. Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de executar esse procedimento armazenado. Para obter mais informações, confira Configurar o Mecanismo de Banco de Dados do SQL Server para criptografia de conexões.

Convenções de sintaxe de Transact-SQL

Observação

O Microsoft Entra ID era conhecido como Azure Active Directory (Azure AD).

Sintaxe

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' ]
[ ; ]

Argumentos

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

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

@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. Se uma senha de assinante for usada, ela será criptografada automaticamente.

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.

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

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

@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 Distribuidor e para conexões com o Assinante 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, 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.

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

@frequency_type [ = ] frequency_type

Um valor que indica quando o Merge Agent é executado. @frequency_type é int e pode ser um dos seguintes 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

Os dias em que o Agente de Mesclagem é executado. @frequency_interval é int e pode ser um dos seguintes valores.

Valor Descrição
1 Sunday
2 Monday
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 dos seguintes 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 0.

@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 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, formatado 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, formatado 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 agendado, formatado como yyyyMMdd. @active_end_date é int, com um padrão de 99991231.

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

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_addmergepushsubscription_agent é usado na replicação de mesclagem e usa funcionalidade semelhante ao sp_addpushsubscription_agent.

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

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

Permissões

Somente membros da função de servidor fixa sysadmin ou db_owner função de banco de dados fixa podem executar sp_addmergepushsubscription_agent.