sp_addmergepullsubscription_agent (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Agrega un nuevo trabajo de agente utilizado para programar la sincronización de una suscripción de extracción a una publicación de combinación. Este procedimiento almacenado se ejecuta en el suscriptor de la base de datos de suscripciones.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Nombre del agente. @name es sysname, con un valor predeterminado de NULL.

[ @publisher = ] N'publisher'

Nombre del servidor del publicador. @publisher es sysname, sin ningún valor predeterminado.

[ @publisher_db = ] N'publisher_db'

Nombre de la base de datos del publicador. @publisher_db es sysname, sin ningún valor predeterminado.

[ @publication = ] N'publication'

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

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

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.

[ @publisher_encrypted_password = ] publisher_encrypted_password

Ya no se admite la configuración de @publisher_encrypted_password . Si se intenta establecer este parámetro de bits , 1 se produce un error.

[ @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 int, con un valor predeterminado de 1. Si 0es , especifica la autenticación de SQL Server. Si 1es , especifica la autenticación de Windows.

Nota:

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts. Si se especifica un valor para este parámetro, se devuelve un mensaje de advertencia, pero el valor se pasa por alto.

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

Nota:

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts. Si se especifica un valor para este parámetro, se devuelve un mensaje de advertencia, pero el valor se pasa por alto.

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

Nota:

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts. Si se especifica un valor para este parámetro, se devuelve un mensaje de advertencia, pero el valor se pasa por alto.

[ @distributor = ] N'distributor'

Nombre del distribuidor. @distributor es sysname, con un valor predeterminado de @publisher; es decir, el publicador también es el distribuidor.

[ @distributor_security_mode = ] distributor_security_mode

Modo de seguridad que se va a usar al conectarse a un distribuidor al sincronizar. @distributor_security_mode es int, 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.

[ @distributor_login = ] N'distributor_login'

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

[ @distributor_password = ] N'distributor_password'

Contraseña del distribuidor. @distributor_password es sysname, con un valor predeterminado de NULL. @distributor_password es necesario si @distributor_security_mode está establecido 0en .

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.

[ @encrypted_password = ] encrypted_password

Ya no se admite la configuración de @encrypted_password . Si se intenta establecer este parámetro de bits , 1 se produce un error.

[ @frequency_type = ] frequency_type

Valor que indica cuándo se ejecuta el Agente de mezcla. @frequency_type es int y puede ser uno de estos 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

El día o los días que se ejecuta el agente de mezcla. @frequency_interval es int, con un valor predeterminado de NULLy puede ser uno de estos 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 estos 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 NULL.

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

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

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

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

[ @optional_command_line = ] N'optional_command_line'

Símbolo del sistema opcional que se proporciona al Agente de mezcla. @optional_command_line es nvarchar(255), con un valor predeterminado de una cadena vacía.

Se puede utilizar para proporcionar parámetros adicionales al Agente de mezcla, como en el siguiente ejemplo, en el que se aumenta el tiempo de espera predeterminado de las consultas a 600 segundos.

@optional_command_line = N'-QueryTimeOut 600'

[ @merge_jobid = ] merge_jobid OUTPUT

Parámetro de salida para el identificador de trabajo. @merge_jobid es un parámetro OUTPUT de tipo binary(16), con un valor predeterminado de NULL.

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

[ @ftp_address = ] N'ftp_address'

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts.

[ @ftp_port = ] ftp_port

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts.

[ @ftp_login = ] N'ftp_login'

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts.

[ @ftp_password = ] N'ftp_password'

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Especifica la ubicación de la que se obtienen los archivos de instantáneas. @alt_snapshot_folder es nvarchar(255), con un valor predeterminado de NULL. Si NULLes , los archivos de instantánea se recogerán de la ubicación predeterminada especificada por el publicador.

[ @working_directory = ] N'working_directory'

Nombre del directorio de trabajo usado para almacenar temporalmente los archivos de datos y esquema de la publicación cuando se usa FTP para transferir archivos de instantáneas. @working_directory es nvarchar(255), con un valor predeterminado de NULL.

[ @use_ftp = ] N'use_ftp'

Especifica que se utilizará FTP en lugar del protocolo normal para recuperar las instantáneas. @use_ftp es nvarchar(5), con un valor predeterminado de false.

[ @reserved = ] N'reserved'

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Usa el solucionador interactivo para resolver conflictos de todos los artículos que permitan la resolución interactiva. @use_interactive_resolver es nvarchar(5), con un valor predeterminado de false.

[ @offloadagent = ] N'offloadagent'

Nota:

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts. Establecer remote_agent_activation en un valor distinto de false genera un error.

[ @offloadserver = ] N'offloadserver'

Nota:

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts. Si se establece remote_agent_server_name en cualquier valor distinto de NULL, se generará un error.

[ @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 solamente se especifica cuando la suscripción se va a sincronizar mediante un trabajo existente en lugar de uno recién creado (el valor predeterminado). Si no es miembro del rol fijo de servidor sysadmin , debe especificar @job_login y @job_password al especificar @job_name.

[ @dynamic_snapshot_location = ] N'dynamic_snapshot_location'

Ruta de acceso a la carpeta desde la que se leerán los archivos de instantáneas si se va a usar una instantánea de datos filtrada. @dynamic_snapshot_location es nvarchar(260), con un valor predeterminado de NULL. Para obtener más información, vea Filtros con parámetros: filtros de fila con parámetros.

[ @use_web_sync = ] use_web_sync

Indica que la sincronización web está habilitada. @use_web_sync es bit, con un valor predeterminado de 0. 1 especifica que la suscripción de extracción se puede sincronizar a través de Internet mediante HTTP.

[ @internet_url = ] N'internet_url'

Ubicación del agente de escucha de replicación (REPLISAPI.DLL) para la sincronización web. @internet_url es nvarchar(260), con un valor predeterminado de NULL. @internet_url es una dirección URL completa con el formato http://server.domain.com/directory/replisapi.dll. Si el servidor está configurado para escuchar en un puerto que no sea el 80, también se debe proporcionar el número de puerto con el formato http://server.domain.com:<portnumber>/directory/replisapi.dll, donde <portnumber> representa al puerto.

[ @internet_login = ] N'internet_login'

Inicio de sesión que usa el Agente de mezcla al conectarse al servidor web que hospeda la sincronización web mediante la autenticación BÁSICA HTTP. @internet_login es sysname, con un valor predeterminado de NULL.

[ @internet_password = ] N'internet_password'

La contraseña que usa el Agente de mezcla al conectarse al servidor web que hospeda la sincronización web mediante la autenticación BÁSICA HTTP. @internet_password es nvarchar(524), con un valor predeterminado de NULL.

Importante

No utilice una contraseña en blanco. Utilice una contraseña segura.

[ @internet_security_mode = ] internet_security_mode

El método de autenticación utilizado por el Agente de mezcla al conectarse al servidor web durante la sincronización web mediante HTTPS. @internet_security_mode es int y puede ser uno de estos valores.

Valor Descripción
0 Se utiliza Autenticación básica.
1 (valor predeterminado) Se utiliza Autenticación integrada de Windows.

Nota:

Se recomienda utilizar la autenticación básica con sincronización web. Para usar la sincronización web, debe realizar una conexión TLS al servidor web. Para más información, consulte Configure Web Synchronization.

[ @internet_timeout = ] internet_timeout

Tiempo que transcurre, en segundos, hasta que expira una solicitud de sincronización web. @internet_timeout es int, con un valor predeterminado de 300 segundos.

[ @hostname = ] N'hostname'

Invalida el valor de HOST_NAME() cuando se usa esta función en la WHERE cláusula de un filtro con parámetros. @hostname es sysname, con un valor predeterminado de NULL.

[ @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 siempre se utiliza para las conexiones del agente al suscriptor y para las conexiones al distribuidor y al publicador cuando se utiliza Autenticación integrada de Windows.

[ @job_password = ] N'job_password'

Contraseña de la cuenta de Windows con la que se ejecuta el agente. @job_password es sysname, con un valor predeterminado de NULL.

Precaución

No almacene información de autenticación en archivos de script. Para una mayor seguridad, los nombres de inicio de sesión y las contraseñas se deben proporcionar en tiempo de ejecución.

Valores de código de retorno

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

Comentarios

sp_addmergepullsubscription_agent se usa en la replicación de mezcla y usa funcionalidad similar a sp_addpullsubscription_agent.

Para obtener un ejemplo de cómo especificar correctamente la configuración de seguridad al ejecutar sp_addmergepullsubscription_agent, vea Crear una suscripción de extracción.

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

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

Permisos

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