sp_addmergesubscription (Transact-SQL)
Se aplica a: SQL Server Azure 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
push
es , se agrega una suscripción de inserción y el Agente de mezcla se agrega en el distribuidor. - Si
pull
es , 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
automatic
es , el esquema y los datos iniciales de las tablas publicadas se transfieren primero al suscriptor. - Si
none
es , 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 |
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
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
false
es , la suscripción no se registra con el Administrador de sincronización. - Si
true
es , 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
.