sp_addmergesubscription (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Crea una suscripción de mezcla de inserción o extracción. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_addmergesubscription
    [ @publication = ] N'publication'
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscription_type = ] N'subscription_type' ]
    [ , [ @subscriber_type = ] N'subscriber_type' ]
    [ , [ @subscription_priority = ] subscription_priority ]
    [ , [ @sync_type = ] N'sync_type' ]
    [ , [ @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' ]
    [ , [ @description = ] N'description' ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @offloadagent = ] offloadagent ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
    [ , [ @merge_job_name = ] N'merge_job_name' ]
    [ , [ @hostname = ] N'hostname' ]
[ ; ]

Argumentos

[ @publication = ] N'publication'

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

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

[ @subscription_type = ] N'subscription_type'

Tipo de suscripción. @subscription_type es nvarchar(15), con un valor predeterminado de push.

  • Si pushes , se agrega una suscripción de inserción y el Agente de mezcla se agrega en el distribuidor.
  • Si pulles , se agrega una suscripción de extracción sin agregar un Agente de mezcla en el distribuidor.

Nota:

Las suscripciones anónimas no necesitan usar este procedimiento almacenado.

[ @subscriber_type = ] N'subscriber_type'

Tipo de suscriptor. @subscriber_type es nvarchar(15) y puede ser uno de los siguientes valores.

Valor Descripción
local (valor predeterminado) Suscriptor solo conocido para el publicador.
global Suscriptor conocido para todos los servidores.

En SQL Server 2005 (9.x) y versiones posteriores, las suscripciones locales se conocen como suscripciones de cliente y las suscripciones globales se conocen como suscripciones de servidor.

[ @subscription_priority = ] subscription_priority

Número que indica la prioridad de la suscripción. @subscription_priority es real, con un valor predeterminado de NULL. En el caso de las suscripciones locales y anónimas, la prioridad es 0.0. Para las suscripciones globales, la prioridad debe ser menor que 100.0.

[ @sync_type = ] N'sync_type'

Tipo de sincronización de suscripciones. @sync_type es nvarchar(15), con un valor predeterminado de automatic.

  • Si automatices , el esquema y los datos iniciales de las tablas publicadas se transfieren primero al suscriptor.
  • Si nonees , se supone que el suscriptor ya tiene el esquema y los datos iniciales de las tablas publicadas. Las tablas y los datos del sistema se transfieren siempre.

Nota:

Se recomienda no especificar un valor de none.

[ @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
4 Diario
8 Semanal
10 Mensual
20 Mensualmente, dependiendo del intervalo de frecuencia
40 Cuando se inicia Agente SQL Server
NULL (valor predeterminado)

[ @frequency_interval = ] frequency_interval

El día o los días 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

Repetición de combinación programada del intervalo de frecuencia en cada mes. @frequency_relative_interval es int y puede ser uno de estos valores.

Valor Descripción
1 Primero
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

Unidad de @frequency_subday_interval. @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

Frecuencia de @frequency_subday que se va a producir entre cada combinación. @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 va a ejecutar. @optional_command_line es nvarchar(4000), con un valor predeterminado de NULL. Este parámetro se utiliza para agregar un comando que captura el resultado y lo guarda en un archivo o para especificar un atributo o archivo de configuración.

[ @description = ] N'description'

Una breve descripción de esta suscripción de mezcla. @description es nvarchar(255), con un valor predeterminado de NULL. El Monitor de replicación muestra este valor en la Friendly Name columna , que se puede usar para ordenar las suscripciones de una publicación supervisada.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Especifica si la suscripción se puede sincronizar a través del Administrador de sincronización de Microsoft 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.

[ @offloadagent = ] offloadagent

Especifica que el agente puede activarse de manera remota. @offloadagent es bit, con un valor predeterminado de 0.

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

[ @offloadserver = ] N'offloadserver'

Especifica el nombre de red del servidor a utilizar en la activación remota del agente. @offloadserver es sysname, con un valor predeterminado de NULL.

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Permite que los conflictos se resuelvan de forma interactiva para todos los artículos que lo permitan. @use_interactive_resolver es nvarchar(5), con un valor predeterminado de false.

[ @merge_job_name = ] N'merge_job_name'

Este parámetro está en desuso y no se puede establecer. @merge_job_name es sysname, con un valor predeterminado de NULL.

[ @hostname = ] N'hostname'

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

Importante

Por motivos de rendimiento, se recomienda no aplicar funciones a los nombres de columna en las cláusulas de filtro de fila con parámetros, como LEFT([MyColumn]) = SUSER_SNAME(). Si usa HOST_NAME en una cláusula de filtro e invalida el valor de HOST_NAME, es posible que sea necesario convertir tipos de datos mediante CONVERT. Para obtener más información sobre los procedimientos recomendados para este caso, vea la sección "Invalidar el valor de HOST_NAME() en el tema Filtros parametrizados- Filtros de fila con parámetros.

Valores de código de retorno

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

Comentarios

sp_addmergesubscription se usa en la replicación de mezcla.

Cuando sp_addmergesubscription es ejecutado por un miembro del rol fijo de servidor sysadmin para crear una suscripción de inserción, el trabajo de Agente de mezcla se crea implícitamente y se ejecuta en la cuenta de servicio de Agente SQL Server. Se recomienda ejecutar sp_addmergepushsubscription_agent y especificar las credenciales de una cuenta de Windows específica del agente diferente para @job_login y @job_password. Para más información, consulte Modelo de seguridad del agente de replicació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".

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