sp_addmergesubscription (Transact-SQL)sp_addmergesubscription (Transact-SQL)

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database (Managed Instance uniquement) nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse

Crée un abonnement de fusion par émission ( push) ou extraction (pull) de données.Creates a push or pull merge subscription. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.This stored procedure is executed at the Publisher on the publication database.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

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

ArgumentsArguments

[ @publication = ] 'publication'Nom de la publication.[ @publication = ] 'publication' Is the name of the publication. publication est de type sysname, sans valeur par défaut.publication is sysname, with no default. La publication doit déjà exister.The publication must already exist.

[ @subscriber = ] 'subscriber'Nom de l’abonné.[ @subscriber = ] 'subscriber' Is the name of the Subscriber. Subscriber est de type sysname, avec NULL comme valeur par défaut.subscriber is sysname, with a default of NULL.

[ @subscriber_db = ] 'subscriber_db'Nom de la base de données d’abonnement.[ @subscriber_db = ] 'subscriber_db' Is the name of the subscription database. subscriber_dbest de type sysname, avec NULL comme valeur par défaut.subscriber_dbis sysname, with a default of NULL.

[ @subscription_type = ] 'subscription_type'Type d’abonnement.[ @subscription_type = ] 'subscription_type' Is the type of subscription. subscription_typeest de type nvarchar (15) , avec Push comme valeur par défaut.subscription_typeis nvarchar(15), with a default of PUSH. Dans le cas d’une notification Push, un abonnement par envoi de notification est ajouté et le agent de fusion est ajouté au serveur de distribution.If push, a push subscription is added and the Merge Agent is added at the Distributor. Dans le cas d’une extraction, un abonnement par extraction est ajouté sans ajouter de agent de fusion sur le serveur de distribution.If pull, a pull subscription is added without adding a Merge Agent at the Distributor.

Notes

Les abonnements anonymes ne doivent pas utiliser cette procédure stockée.Anonymous subscriptions do not need to use this stored procedure.

[ @subscriber_type = ] 'subscriber_type'Type de l’abonné.[ @subscriber_type = ] 'subscriber_type' Is the type of Subscriber. subscriber_typeest de type nvarchar (15) et peut prendre l’une des valeurs suivantes.subscriber_typeis nvarchar(15), and can be one of the following values.

ValueValue DescriptionDescription
local valeurslocal (default) Abonné connu uniquement sur le serveur de publication.Subscriber known only to the Publisher.
globalglobal Abonné connu sur tous les serveurs.Subscriber known to all servers.

Dans SQL Server 2005 (9.x)SQL Server 2005 (9.x) et versions ultérieures, les abonnements locaux sont des abonnements clients, et les abonnements globaux sont des abonnements serveur.In SQL Server 2005 (9.x)SQL Server 2005 (9.x) and later versions, local subscriptions are referred to as client subscriptions, and global subscriptions are referred to as server subscriptions

[ @subscription_priority = ] subscription_priorityNombre indiquant la priorité de l’abonnement.[ @subscription_priority = ] subscription_priority Is a number indicating the priority for the subscription. subscription_priorityest de type Real, avec NULL comme valeur par défaut.subscription_priorityis real, with a default of NULL. Pour les abonnements de type local et anonyme, la valeur affectée à la priorité est 0.0.For local and anonymous subscriptions, the priority is 0.0. Pour les abonnements de type global, la valeur affectée à la priorité doit être inférieure à 100.0.For global subscriptions, the priority must be less than 100.0.

[ @sync_type = ] 'sync_type'Type de synchronisation de l’abonnement.[ @sync_type = ] 'sync_type' Is the subscription synchronization type. sync_typeest de type nvarchar (15) , avec Automaticcomme valeur par défaut.sync_typeis nvarchar(15), with a default of automatic. Peut être automatique ou aucun.Can be automatic or none. Si la valeur est Automatic, le schéma et les données initiales des tables publiées sont transférés en premier vers l’abonné.If automatic, the schema and initial data for published tables are transferred to the Subscriber first. Si aucun, il est supposé que l’abonné possède déjà le schéma et les données initiales pour les tables publiées.If none, it is assumed the Subscriber already has the schema and initial data for published tables. Les données et les tables système sont toujours transférées.System tables and data are always transferred.

Notes

Nous vous recommandons de ne pas spécifier de valeur None.We recommend to not specifying a value of none.

[ @frequency_type = ] frequency_typeValeur indiquant le moment où l’Agent de fusion s’exécutera.[ @frequency_type = ] frequency_type Is a value indicating when the Merge Agent will run. frequency_type est de type intet peut prendre l’une des valeurs suivantes.frequency_type is int, and can be one of the following values.

ValueValue DescriptionDescription
11 Une foisOnce
44 Tous les joursDaily
88 SemaineWeekly
1010 MoisMonthly
2020 Mensuellement, en fonction de l'intervalle de fréquenceMonthly, relative to the frequency interval
4040 Au démarrage de l'Agent SQL ServerSQL ServerWhen SQL ServerSQL Server Agent starts
NULL (par défaut)NULL (default)

[ @frequency_interval = ] frequency_intervalJour ou jours d’exécution de l’Agent de fusion.[ @frequency_interval = ] frequency_interval The day or days that the Merge Agent runs. frequency_interval est de type intet peut prendre l’une des valeurs suivantes.frequency_interval is int, and can be one of the following values.

ValueValue DescriptionDescription
11 DimancheSunday
22 LundiMonday
33 MardiTuesday
44 MercrediWednesday
55 JeudiThursday
66 VendrediFriday
77 SamediSaturday
88 JourDay
99 Jours de la semaineWeekdays
1010 Jours de week-endWeekend days
NULL (par défaut)NULL (default)

[ @frequency_relative_interval = ] frequency_relative_intervalOccurrence de fusion planifiée de l’intervalle de fréquence de chaque mois.[ @frequency_relative_interval = ] frequency_relative_interval Is the scheduled merge occurrence of the frequency interval in each month. frequency_relative_interval est de type intet peut prendre l’une des valeurs suivantes.frequency_relative_interval is int, and can be one of these values.

ValueValue DescriptionDescription
11 PremièreFirst
22 SecondeSecond
44 TroisièmeThird
88 QuatrièmeFourth
1616 DernièreLast
NULL (par défaut)NULL (default)

[ @frequency_recurrence_factor = ] frequency_recurrence_factorFacteur de récurrence utilisé par frequency_type.[ @frequency_recurrence_factor = ] frequency_recurrence_factor Is the recurrence factor used by frequency_type. frequency_recurrence_factorest de type int, avec NULL comme valeur par défaut.frequency_recurrence_factoris int, with a default of NULL.

[ @frequency_subday = ] frequency_subdayUnité pour frequency_subday_interval.[ @frequency_subday = ] frequency_subday Is the unit for frequency_subday_interval. frequency_subday est de type intet peut prendre l’une des valeurs suivantes.frequency_subday is int, and can be one of the following values.

ValueValue DescriptionDescription
11 Une foisOnce
22 SecondeSecond
44 MinuteMinute
88 HeureHour
NULL (par défaut)NULL (default)

[ @frequency_subday_interval = ] frequency_subday_intervalFréquence à laquelle les frequency_subday se produisent entre chaque fusion.[ @frequency_subday_interval = ] frequency_subday_interval Is the frequency for frequency_subday to occur between each merge. frequency_subday_interval est de type int, avec NULL comme valeur par défaut.frequency_subday_interval is int, with a default of NULL.

[ @active_start_time_of_day = ] active_start_time_of_dayHeure de la journée à laquelle le Agent de fusion est planifié pour la première fois, au format HHMMSS.[ @active_start_time_of_day = ] active_start_time_of_day Is the time of day when the Merge Agent is first scheduled, formatted as HHMMSS. active_start_time_of_day est de type int, avec NULL comme valeur par défaut.active_start_time_of_day is int, with a default of NULL.

[ @active_end_time_of_day = ] active_end_time_of_dayHeure de la journée à laquelle le Agent de fusion cesse d’être planifié, au format HHMMSS.[ @active_end_time_of_day = ] active_end_time_of_day Is the time of day when the Merge Agent stops being scheduled, formatted as HHMMSS. active_end_time_of_day est de type int, avec NULL comme valeur par défaut.active_end_time_of_day is int, with a default of NULL.

[ @active_start_date = ] active_start_dateDate à laquelle le Agent de fusion est planifié pour la première fois, au format AAAAMMJJ.[ @active_start_date = ] active_start_date Is the date when the Merge Agent is first scheduled, formatted as YYYYMMDD. active_start_date est de type int, avec NULL comme valeur par défaut.active_start_date is int, with a default of NULL.

[ @active_end_date = ] active_end_dateDate à laquelle le Agent de fusion cesse d’être planifié, au format AAAAMMJJ.[ @active_end_date = ] active_end_date Is the date when the Merge Agent stops being scheduled, formatted as YYYYMMDD. active_end_date est de type int, avec NULL comme valeur par défaut.active_end_date is int, with a default of NULL.

[ @optional_command_line = ] 'optional_command_line'Est l’invite de commandes facultative à exécuter.[ @optional_command_line = ] 'optional_command_line' Is the optional command prompt to execute. optional_command_lineest de type nvarchar (4000) , avec NULL comme valeur par défaut.optional_command_lineis nvarchar(4000), with a default of NULL. Cet argument est utilisé pour ajouter une commande qui permet de capturer le résultat et de le sauvegarder dans un fichier ou de spécifier un fichier de configuration ou un attribut.This parameter is used to add a command that captures the output and saves it to a file or to specify a configuration file or attribute.

[ @description = ] 'description'Brève description de cet abonnement de fusion.[ @description = ] 'description' Is a brief description of this merge subscription. Descriptionest de type nvarchar (255) , avec NULL comme valeur par défaut.descriptionis nvarchar(255), with a default of NULL. Cette valeur est affichée par le moniteur de réplication dans la colonne nom convivial , qui peut être utilisée pour trier les abonnements pour une publication analysée.This value is displayed by the Replication Monitor in the Friendly Name column, which can be used to sort the subscriptions for a monitored publication.

[ @enabled_for_syncmgr = ] 'enabled_for_syncmgr'Spécifie si l’abonnement peut être synchronisé via MicrosoftMicrosoft le gestionnaire de synchronisation Windows.[ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' Specifies if the subscription can be synchronized through MicrosoftMicrosoft Windows Synchronization Manager. enabled_for_syncmgr est de type nvarchar (5) , avec false comme valeur par défaut.enabled_for_syncmgr is nvarchar(5), with a default of FALSE. Si la valeurest false, l’abonnement n’est pas inscrit auprès du gestionnaire de synchronisation.If false, the subscription is not registered with Synchronization Manager. Si la valeur est true, l’abonnement est inscrit auprès du gestionnaire de synchronisation et peut MicrosoftMicrosoft être synchronisé sans démarrage SQL Server Management StudioSQL Server Management Studio.If true, the subscription is registered with Synchronization Manager and can be synchronized without starting MicrosoftMicrosoft SQL Server Management StudioSQL Server Management Studio.

[ @offloadagent = ] remote_agent_activationSpécifie que l’agent peut être activé à distance.[ @offloadagent = ] remote_agent_activation Specifies that the agent can be activated remotely. remote_agent_activation est de bits avec 0comme valeur par défaut.remote_agent_activation is bit with a default of 0.

Notes

Ce paramètre est déconseillé et n'est conservé que pour la compatibilité descendante des scripts.This parameter has been deprecated and is only maintained for backward compatibility of scripts.

[ @offloadserver = ] 'remote_agent_server_name'Spécifie le nom réseau du serveur à utiliser pour l’activation de l’agent distant.[ @offloadserver = ] 'remote_agent_server_name' Specifies the network name of server to be used for remote agent activation. remote_agent_server_nameest de type sysname, avec NULL comme valeur par défaut.remote_agent_server_nameis sysname, with a default of NULL.

[ @use_interactive_resolver = ] 'use_interactive_resolver'Permet de résoudre les conflits de manière interactive pour tous les articles qui autorisent la résolution interactive.[ @use_interactive_resolver = ] 'use_interactive_resolver' Allows conflicts to be resolved interactively for all articles that allow interactive resolution. use_interactive_resolver est de type nvarchar (5) , avec false comme valeur par défaut.use_interactive_resolver is nvarchar(5), with a default of FALSE.

[ @merge_job_name = ] 'merge_job_name'Le paramètre merge_job_name est déconseillé et ne peut pas être défini. @[ @merge_job_name = ] 'merge_job_name' The @merge_job_name parameter is deprecated and cannot be set. merge_job_name est de type sysname, avec NULL comme valeur par défaut.merge_job_name is sysname, with a default of NULL.

[ @hostname = ] 'hostname'Remplace la valeur retournée par HOST_NAME lorsque cette fonction est utilisée dans la clause WHERE d’un filtre paramétré.[ @hostname = ] 'hostname' Overrides the value returned by HOST_NAME when this function is used in the WHERE clause of a parameterized filter. Hostname est de type sysname, avec NULL comme valeur par défaut.Hostname is sysname, with a default of NULL.

Important

Pour des raisons de performance, il est recommandé de ne pas appliquer de fonctions aux noms de colonne dans les clauses des filtres de lignes paramétrables, telles que LEFT([MyColumn]) = SUSER_SNAME().For performance reasons, we recommend that you not apply functions to column names in parameterized row filter clauses, such as LEFT([MyColumn]) = SUSER_SNAME(). Si vous utilisez HOST_NAME dans une clause de filtre et que vous remplacez la valeur de HOST_NAME, il peut être nécessaire de convertir les types de données à l’aide de Convert.If you use HOST_NAME in a filter clause and override the HOST_NAME value, it might be necessary to convert data types using CONVERT. Pour plus d'informations sur la conduite à adopter dans cette situation, consultez la section « Substitution de la valeur de HOST_NAME » de la rubrique Parameterized Row Filters.For more information about best practices for this case, see the section "Overriding the HOST_NAME() Value" in the topic Parameterized Row Filters.

Valeurs des codes de retourReturn Code Values

0 (succès) ou 1 (échec)0 (success) or 1 (failure)

NotesRemarks

sp_addmergesubscription est utilisé dans la réplication de fusion.sp_addmergesubscription is used in merge replication.

Lorsque sp_addmergesubscription est exécutée par un membre du rôle serveur fixe sysadmin pour créer un abonnement par envoi de notification, le travail agent de fusion est implicitement créé et SQL ServerSQL Server s’exécute sous le compte de service agent.When sp_addmergesubscription is executed by a member of the sysadmin fixed server role to create a push subscription, the Merge Agent job is implicitly created and runs under the SQL ServerSQL Server Agent service account. Nous vous recommandons d’exécuter sp_addmergepushsubscription_agent et de spécifier les informations d’identification d’un autre compte Windows spécifique à l’agent pour @job_login et @job_password.We recommend that you execute sp_addmergepushsubscription_agent and specify the credentials of a different, agent-specific Windows account for @job_login and @job_password. Pour plus d’informations, voir Replication Agent Security Model.For more information, see Replication Agent Security Model.

ExempleExample

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

AutorisationsPermissions

Seuls les membres du rôle serveur fixe sysadmin ou du rôle de base de données fixe db_owner peuvent exécuter sp_addmergesubscription.Only members of the sysadmin fixed server role or db_owner fixed database role can execute sp_addmergesubscription.

Voir aussiSee Also

Create a Push Subscription Create a Push Subscription
Créer un abonnement par extraction de données Create a Pull Subscription
Résolution interactive des conflits Interactive Conflict Resolution
S’abonner aux Publications Subscribe to Publications
sp_changemergesubscription (Transact-SQL) sp_changemergesubscription (Transact-SQL)
sp_dropmergesubscription (Transact-SQL) sp_dropmergesubscription (Transact-SQL)
sp_helpmergesubscription (Transact-SQL)sp_helpmergesubscription (Transact-SQL)