sp_addmergesubscription (Transact-SQL)
Crée un abonnement de fusion par émission ( push) ou extraction (pull) de données. Cette procédure stockée est exécutée au niveau du serveur de publication sur la base de données de publication.
Conventions de la syntaxe de Transact-SQL
Syntaxe
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'
Arguments
[ @publication=] 'publication'
Nom de la publication. publication est de type sysname et n'a pas de valeur par défaut. La publication doit déjà exister.[ @subscriber =] 'subscriber'
Nom de l'abonné. subscriber est de type sysname, avec NULL comme valeur par défaut.[ @subscriber_db=] 'subscriber_db'
Nom de la base de données d'abonnement. subscriber_dbest de type sysname, avec NULL comme valeur par défaut.[ @subscription_type=] 'subscription_type'
Type d'abonnement. subscription_typeest de type nvarchar(15), avec PUSH comme valeur par défaut. Si l'argument prend la valeur push, un abonnement par émission de données est ajouté, et l'Agent de fusion est ajouté au serveur de distribution. Si l'argument prend la valeur pull, un abonnement par extraction de données est ajouté sans que soit ajouté un Agent de fusion au serveur de distribution.[!REMARQUE]
Les abonnements anonymes ne doivent pas utiliser cette procédure stockée.
[ @subscriber_type=] 'subscriber_type'
Type d'abonné. subscriber_typeest de type nvarchar(15) et peut prendre l'une des valeurs suivantes.Valeur
Description
local (par défaut)
Abonné connu uniquement sur le serveur de publication.
global
Abonné connu sur tous les serveurs.
Dans SQL Server 2005 et versions ultérieures, les abonnements locaux sont des abonnements clients, et les abonnements globaux sont des abonnements serveur.
[ @subscription_priority=] subscription_priority
Numéro indiquant la priorité de l'abonnement. subscription_priorityest de type real, avec NULL comme valeur par défaut. Pour les abonnements de type local et anonyme, la valeur affectée à la priorité est 0.0. Pour les abonnements de type global, la valeur affectée à la priorité doit être inférieure à 100.0.[ @sync_type=] 'sync_type'
Type de synchronisation d'abonnement. sync_typeest de type nvarchar(15), avec automatic comme valeur par défaut. Peut être automatic ou none. Si la valeur est automatic, le schéma et les données initiales des tables publiées sont transférés en premier lieu vers l'Abonné. Si la valeur est none, il considère que l'Abonné dispose déjà du schéma et des données initiales pour les tables publiées. Les données et les tables système sont toujours transférées.[!REMARQUE]
Nous vous recommandons de ne pas spécifier la valeur none.
[ @frequency_type=] frequency_type
Valeur indiquant le moment où l'Agent de fusion est exécuté. frequency_type est de type int et peut prendre l'une des valeurs suivantes.Valeur
Description
1
Une fois
4
Quotidienne
8
Hebdomadaire
10
Mensuelle
20
Mensuellement, en fonction de l'intervalle de fréquence
40
Au démarrage de l'Agent SQL Server
NULL (valeur par défaut)
[ @frequency_interval=] frequency_interval
Jour(s) où l'Agent de fusion s'exécute. frequency_interval est de type int et peut prendre l'une des valeurs suivantes.Valeur
Description
1
Dimanche
2
Lundi
3
Mardi
4
Mercredi
5
Jeudi
6
Vendredi
7
Samedi
8
Jour
9
Jours de la semaine
10
Jours de week-end
NULL (par défaut)
[ @frequency_relative_interval=] frequency_relative_interval
Occurrence de fusion planifiée de l'intervalle de fréquence pour chaque mois. frequency_relative_interval est de type int et peut prendre l'une des valeurs suivantes.Valeur
Description
1
Première
2
Seconde
4
Troisième
8
Quatrième
16
Dernière
NULL (par défaut)
[ @frequency_recurrence_factor=] frequency_recurrence_factor
Facteur de récurrence utilisé par frequency_type. frequency_recurrence_factorest de type int, avec NULL comme valeur par défaut.[ @frequency_subday=] frequency_subday
Unité de frequency_subday_interval. frequency_subday est de type int et peut prendre l'une des valeurs suivantes.Valeur
Description
1
Une fois
2
Seconde
4
Minute
8
Heure
NULL (par défaut)
[ @frequency_subday_interval=] frequency_subday_interval
Fréquence à laquelle frequency_subday doit se produire entre chaque fusion. frequency_subday_interval est de type int, avec NULL comme valeur par défaut.[ @active_start_time_of_day=] active_start_time_of_day
Heure à laquelle l’Agent de fusion est planifié pour la première fois, au format HHMMSS. active_start_time_of_day est de type int, avec NULL comme valeur par défaut.[ @active_end_time_of_day=] active_end_time_of_day
Heure à laquelle l’Agent de fusion cesse d'être planifié, au format HHMMSS. active_end_time_of_day est de type int, avec NULL comme valeur par défaut.[ @active_start_date=] active_start_date
Date à laquelle l’Agent de fusion est planifié pour la première fois, au format AAAAMMJJ. active_start_date est de type int, avec NULL comme valeur par défaut.[ @active_end_date=] active_end_date
Date à laquelle l’Agent de fusion cesse d'être planifié, au format AAAAMMJJ. active_end_date est de type int, avec NULL comme valeur par défaut.[ @optional_command_line=] 'optional_command_line'
Invite de commandes facultative à exécuter. optional_command_lineest de type nvarchar(4000), avec NULL comme valeur par défaut. 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.[ @description=] 'description'
Brève description de cet abonnement de fusion. descriptionest de type nvarchar(255), avec NULL comme valeur par défaut. Cette valeur est affichée par le moniteur de réplication dans la colonne Nom convivial, qui permet de trier les abonnements d'une publication surveillée.[ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
Spécifie si l'abonnement peut être synchronisé à l'aide du Gestionnaire de synchronisation Microsoft Windows. enabled_for_syncmgr est de type nvarchar(5), avec FALSE comme valeur par défaut. Si la valeur est false, l'abonnement n'est pas enregistré par le Gestionnaire de synchronisation. Si la valeur est true, l'abonnement est enregistré par le Centre de synchronisation et peut ensuite être synchronisé sans qu'il soit nécessaire de démarrer Microsoft SQL Server Management Studio.[ @offloadagent= ] remote_agent_activation
Indique si l'Agent peut être activé à distance. remote_agent_activation est de type bit avec 0 comme valeur par défaut.[!REMARQUE]
Ce paramètre est déconseillé et n'est conservé que pour la compatibilité descendante des scripts.
[ @offloadserver= ] 'remote_agent_server_name'
Indique le nom de réseau du serveur utilisé pour l'activation de l'Agent distant. remote_agent_server_nameest de type sysname, avec NULL comme valeur par défaut.[ @use_interactive_resolver= ] 'use_interactive_resolver'
Autorise la résolution interactive des conflits pour tous les articles autorisant la résolution interactive. use_interactive_resolver est de type nvarchar(5), avec FALSE comme valeur par défaut.[ @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 est de type sysname, avec NULL comme valeur par défaut.[ @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 est de type sysname, avec NULL comme valeur par défaut.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(). Si vous utilisez HOST_NAME dans une clause de filtrage et que vous remplacez la valeur HOST_NAME, vous pouvez être amené à convertir les types de données à l'aide de 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 Filtres de lignes paramétrés.
Valeurs des codes de retour
0 (succès) ou 1 (échec)
Notes
sp_addmergesubscription est utilisée lors d'une réplication de fusion.
Lorsque sp_addmergesubscription est exécutée par un membre du rôle serveur fixe sysadmin en vue de créer un abonnement par émission de données (push), le travail d'Agent de fusion est implicitement créé et exécuté sous le compte de service SQL Server Agent. Il est recommandé d'exécuter sp_addmergepushsubscription_agent et d'indiquer les informations d'identification d'un autre compte Windows spécifique à l'Agent pour @job_login et @job_password. Pour plus d'informations, consultez Modèle de sécurité de l'Agent de réplication.
Exemple
-- 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
Autorisations
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.
Voir aussi
Référence
sp_changemergesubscription (Transact-SQL)
sp_dropmergesubscription (Transact-SQL)
sp_helpmergesubscription (Transact-SQL)
Concepts
Créer un abonnement par émission (push)
Créer un abonnement par extraction de données (pull)