Compartir vía


sp_addmergepushsubscription_agent (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Agrega un nuevo trabajo de agente que se utiliza para programar la sincronización de una suscripción de inserción con una publicación de combinación. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Importante

Al configurar un publicador con un distribuidor remoto, los valores proporcionados para todos los parámetros, incluidos @job_login y @job_password, se envían al distribuidor como texto sin formato. Antes de ejecutar este procedimiento almacenado, se recomienda cifrar la conexión entre el publicador y su distribuidor remoto. Para más información, consulte Configuración del Motor de base de datos de SQL Server para el cifrado de las conexiones.

Convenciones de sintaxis de Transact-SQL

Nota:

Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).

Sintaxis

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'publication'

Nombre de la publicación. @publication es sysname, sin ningún valor predeterminado.

[ @subscriber = ] N'subscriber'

Nombre del suscriptor. @subscriber es sysname, con un valor predeterminado de NULL.

[ @subscriber_db = ] N'subscriber_db'

Nombre de la base de datos de suscripciones. @subscriber_db es sysname, con un valor predeterminado de NULL.

[ @subscriber_security_mode = ] subscriber_security_mode

Modo de seguridad que se va a usar al conectarse a un suscriptor al sincronizar. @subscriber_security_mode es smallint, con un valor predeterminado de 1. Los valores siguientes definen el modo de seguridad:

  • 0 especifica la autenticación de SQL Server.
  • 1especifica autenticación de Windows.
  • 2 especifica la autenticación con contraseña de Microsoft Entra, a partir de SQL Server 2022 (16.x) CU 6.
  • 3 especifica la autenticación integrada de Microsoft Entra, a partir de SQL Server 2022 (16.x) CU 6.
  • 4 especifica la autenticación de tokens de Microsoft Entra, a partir de SQL Server 2022 (16.x) CU 6.

Importante

Siempre que sea posible, utilice la autenticación de Windows.

[ @subscriber_login = ] N'subscriber_login'

Inicio de sesión del suscriptor que se usará al conectarse a un suscriptor al sincronizar. @subscriber_login es sysname, con un valor predeterminado de NULL. @subscriber_login es necesario si @subscriber_security_mode está establecido 0en .

[ @subscriber_password = ] N'subscriber_password'

Contraseña del suscriptor para la autenticación de SQL Server. @subscriber_password es sysname, con un valor predeterminado de NULL. @subscriber_password es necesario si @subscriber_security_mode está establecido 0en . Si se usa una contraseña de suscriptor, se cifra automáticamente.

Importante

Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar las credenciales en un archivo de script, proteja el archivo para evitar el acceso no autorizado.

[ @publisher_security_mode = ] publisher_security_mode

Modo de seguridad que se va a usar al conectarse a un publicador al sincronizar. @publisher_security_mode es smallint, con un valor predeterminado de 1. Los valores siguientes definen el modo de seguridad:

  • 0 especifica la autenticación de SQL Server.
  • 1especifica autenticación de Windows.
  • 2 especifica la autenticación con contraseña de Microsoft Entra, a partir de SQL Server 2022 (16.x) CU 6.
  • 3 especifica la autenticación integrada de Microsoft Entra, a partir de SQL Server 2022 (16.x) CU 6.
  • 4 especifica la autenticación de tokens de Microsoft Entra, a partir de SQL Server 2022 (16.x) CU 6.

Importante

Siempre que sea posible, utilice la autenticación de Windows.

[ @publisher_login = ] N'publisher_login'

Inicio de sesión que se va a usar al conectarse a un publicador al sincronizar. @publisher_login es sysname, con un valor predeterminado de NULL.

[ @publisher_password = ] N'publisher_password'

Contraseña usada al conectarse al publicador. @publisher_password es sysname, con un valor predeterminado de NULL.

Importante

No utilice una contraseña en blanco. Utilice una contraseña segura. Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar las credenciales en un archivo de script, proteja el archivo para evitar el acceso no autorizado.

[ @job_login = ] N'job_login'

Inicio de sesión de la cuenta de Windows con la que se ejecuta el agente. @job_login es nvarchar(257), con un valor predeterminado de NULL. Esta cuenta de Windows se utiliza siempre para las conexiones de agentes al distribuidor y para las conexiones al suscriptor y al publicador, cuando se utiliza la autenticación de Windows integrada.

[ @job_password = ] N'job_password'

Contraseña de la cuenta de Windows con la que se ejecuta el agente. @job_password es sysname, sin ningún valor predeterminado.

Importante

Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar las credenciales en un archivo de script, proteja el archivo para evitar el acceso no autorizado.

[ @job_name = ] N'job_name'

Nombre de un trabajo de agente existente. @job_name es sysname, con un valor predeterminado de NULL. Este parámetro solo se especifica cuando se sincroniza la suscripción con un trabajo existente en lugar de utilizar un trabajo recién creado (la opción predeterminada). Si no es miembro del rol fijo de servidor sysadmin , debe especificar job_login y job_password al especificar @job_name.

[ @frequency_type = ] frequency_type

Valor que indica cuándo se ejecuta el Agente de mezcla. @frequency_type es int y puede ser uno de los siguientes valores.

Valor Descripción
1 Una vez
2 A petición
4 Diario
8 Semanal
16 Mensual
32 Mensualmente relativa
64 Iniciar automáticamente
128 Periódico
NULL (valor predeterminado)

Nota:

Especificar un valor de 64 hace que el Agente de mezcla se ejecute en modo continuo. Esto corresponde a establecer el -Continuous parámetro para el agente. Para más información, consulte Replication Merge Agent.

[ @frequency_interval = ] frequency_interval

Los días en que se ejecuta el agente de mezcla. @frequency_interval es int y puede ser uno de los siguientes valores.

Valor Descripción
1 Domingo
2 Lunes
3 Martes
4 Miércoles
5 Jueves
6 Viernes
7 Sábado
8 Día
9 Días de la semana
10 Días del fin de semana
NULL (valor predeterminado)

[ @frequency_relative_interval = ] frequency_relative_interval

Fecha del Agente de mezcla. Este parámetro se usa cuando @frequency_type se establece 32 en (relativo mensual). @frequency_relative_interval es int y puede ser uno de los siguientes valores.

Valor Descripción
1 First
2 Segundo
4 Tercero
8 Cuarta
16 Último
NULL (valor predeterminado)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Factor de periodicidad utilizado por @frequency_type. @frequency_recurrence_factor es int, con un valor predeterminado de 0.

[ @frequency_subday = ] frequency_subday

Frecuencia con la que se vuelve a programar durante el período definido. @frequency_subday es int y puede ser uno de los siguientes valores.

Valor Descripción
1 Una vez
2 Second
4 Minute
8 Hora
NULL (valor predeterminado)

[ @frequency_subday_interval = ] frequency_subday_interval

Intervalo de @frequency_subday. @frequency_subday_interval es int, con un valor predeterminado de NULL.

[ @active_start_time_of_day = ] active_start_time_of_day

Hora del día en que el Agente de mezcla se programa por primera vez, con el formato HHmmss. @active_start_time_of_day es int, con un valor predeterminado de 0.

[ @active_end_time_of_day = ] active_end_time_of_day

Hora del día en que el Agente de mezcla deja de programarse, con formato HHmmss. @active_end_time_of_day es int, con un valor predeterminado de 235959.

[ @active_start_date = ] active_start_date

Fecha en la que el Agente de mezcla se programa por primera vez, con el formato yyyyMMdd. @active_start_date es int, con un valor predeterminado de 0.

[ @active_end_date = ] active_end_date

Fecha en la que el Agente de mezcla deja de programarse, con el formato yyyyMMdd. @active_end_date es int, con un valor predeterminado de 99991231.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Especifica si la suscripción se puede sincronizar mediante el Administrador de sincronización de Windows. @enabled_for_syncmgr es nvarchar(5), con un valor predeterminado de false.

  • Si falsees , la suscripción no se registra con el Administrador de sincronización.
  • Si truees , la suscripción se registra con el Administrador de sincronización y se puede sincronizar sin iniciar SQL Server Management Studio.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_addmergepushsubscription_agent se usa en la replicación de mezcla y usa funcionalidad similar a sp_addpushsubscription_agent.

Ejemplos

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

Permisos

Solo los miembros del rol fijo de servidor sysadmin o db_owner rol fijo de base de datos pueden ejecutar sp_addmergepushsubscription_agent.