sp_addmergesubscription (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Crée un abonnement de fusion par émission ( push) ou extraction (pull) de données. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @publication = ] N’publication'

Nom de la publication. @publication est sysname, sans valeur par défaut. La publication doit déjà exister.

[ @subscriber = ] N’subscriber'

Nom de l'Abonné. @subscriber est sysname, avec la valeur par défaut NULL.

[ @subscriber_db = ] N’subscriber_db'

Nom de la base de données d’abonnement. @subscriber_db est sysname, avec la valeur par défaut NULL.

[ @subscription_type = ] N’subscription_type'

Type d’abonnement. @subscription_type est nvarchar(15), avec la valeur par défaut push.

  • Si push, un abonnement Push est ajouté et le Agent de fusion est ajouté sur le serveur de distribution.
  • Si pull, un abonnement par extraction est ajouté sans ajouter de Agent de fusion sur le serveur de distribution.

Remarque

Les abonnements anonymes n’ont pas besoin d’utiliser cette procédure stockée.

[ @subscriber_type = ] N’subscriber_type'

Type d’Abonné. @subscriber_type est nvarchar(15) et peut être l’une des valeurs suivantes.

Valeur Description
local (valeur par défaut) Abonné connu uniquement sur le serveur de publication.
global Abonné connu sur tous les serveurs.

Dans SQL Server 2005 (9.x) et versions ultérieures, les abonnements locaux sont appelés abonnements clients, et les abonnements globaux sont appelés abonnements serveur.

[ @subscription_priority = ] subscription_priority

Nombre indiquant la priorité de l’abonnement. @subscription_priority est réel, avec une valeur par défaut de NULL. Pour les abonnements locaux et anonymes, la priorité est 0.0. Pour les abonnements globaux, la priorité doit être inférieure 100.0à .

[ @sync_type = ] N’sync_type'

Type de synchronisation d’abonnement. @sync_type est nvarchar(15), avec la valeur par défaut automatic.

  • Si automatic, le schéma et les données initiales des tables publiées sont transférées d’abord vers l’Abonné.
  • Si none, l’Abonné est supposé avoir déjà le schéma et les données initiales pour les tables publiées. Les données et les tables système sont toujours transférées.

Remarque

Nous vous déconseillons de spécifier la valeur .none

[ @frequency_type = ] frequency_type

Valeur indiquant quand le Agent de fusion s’exécute. @frequency_type est int et peut être l’une des valeurs suivantes.

Valeur Description
1 Une fois
4 Quotidiennement
8 Hebdomadaire
10 Mensuelle
20 Mensuellement, en fonction de l'intervalle de fréquence
40 Quand SQL Server Agent démarre
NULL (valeur par défaut)

[ @frequency_interval = ] frequency_interval

Jour(s) où l'Agent de fusion s'exécute. @frequency_interval est int et peut être l’une des valeurs suivantes.

Valeur Description
1 Dimanche
2 Lundi
3 Mardi
4 Mercredi
5 Jeudi
6 Vendredi
7 Samedi
8 Day
9 Jours de la semaine
10 Jours de week-end
NULL (valeur par défaut)

[ @frequency_relative_interval = ] frequency_relative_interval

Occurrence de fusion planifiée de l’intervalle de fréquence dans chaque mois. @frequency_relative_interval est int et peut être l’une de ces valeurs.

Valeur Description
1 Première
2 Second
4 Third
8 Quatrième
16 Dernier
NULL (valeur par défaut)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Facteur de périodicité utilisé par @frequency_type. @frequency_recurrence_factor est int, avec la valeur par défaut NULL.

[ @frequency_subday = ] frequency_subday

Unité de @frequency_subday_interval. @frequency_subday est int et peut être l’une des valeurs suivantes.

Valeur Description
1 Une fois
2 Second
4 Minute
8 Heure
NULL (valeur par défaut)

[ @frequency_subday_interval = ] frequency_subday_interval

Fréquence de @frequency_subday se produire entre chaque fusion. @frequency_subday_interval est int, avec la valeur par défaut NULL.

[ @active_start_time_of_day = ] active_start_time_of_day

Heure du jour où la Agent de fusion est planifiée pour la première fois, mise en forme comme HHmmss. @active_start_time_of_day est int, avec la valeur par défaut NULL.

[ @active_end_time_of_day = ] active_end_time_of_day

Heure du jour où la Agent de fusion cesse d’être planifiée, mise en forme comme HHmmss. @active_end_time_of_day est int, avec la valeur par défaut NULL.

[ @active_start_date = ] active_start_date

Date à laquelle la Agent de fusion est planifiée pour la première fois, mise en forme en tant que yyyyMMdd. @active_start_date est int, avec une valeur par défaut de NULL.

[ @active_end_date = ] active_end_date

Date à laquelle la Agent de fusion cesse d’être planifiée, mise en forme comme yyyyMMddsuit : @active_end_date est int, avec une valeur par défaut de NULL.

[ @optional_command_line = ] N’optional_command_line'

Invite de commandes facultative à exécuter. @optional_command_line est nvarchar(4000), avec la valeur par défaut 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.

[ @description = ] N’description'

Brève description de cet abonnement de fusion. @description est nvarchar(255), avec la valeur par défaut NULL. Cette valeur est affichée par le Moniteur de réplication dans la Friendly Name colonne, qui peut être utilisé pour trier les abonnements d’une publication surveillée.

[ @enabled_for_syncmgr = ] N’enabled_for_syncmgr'

Spécifie si l’abonnement peut être synchronisé via le Gestionnaire de synchronisation Microsoft Windows. @enabled_for_syncmgr est nvarchar(5), avec la valeur par défaut false.

  • Si false, l’abonnement n’est pas inscrit auprès du Gestionnaire de synchronisation.
  • Si true, l’abonnement est inscrit auprès du Gestionnaire de synchronisation et peut être synchronisé sans démarrer SQL Server Management Studio.

[ @offloadagent = ] déchargement

Indique si l'Agent peut être activé à distance. @offloadagent est bit, avec la valeur par défaut 0.

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts.

[ @offloadserver = ] N’offloadserver'

Indique le nom de réseau du serveur utilisé pour l'activation de l'Agent distant. @offloadserver est sysname, avec la valeur par défaut NULL.

[ @use_interactive_resolver = ] N’use_interactive_resolver'

Autorise la résolution interactive des conflits pour tous les articles autorisant la résolution interactive. @use_interactive_resolver est nvarchar(5), avec la valeur par défaut false.

[ @merge_job_name = ] N’merge_job_name'

Ce paramètre est déconseillé et ne peut pas être défini. @merge_job_name est sysname, avec la valeur par défaut NULL.

[ @hostname = ] N’hostname'

Remplace la valeur retournée par HOST_NAME lorsque cette fonction est utilisée dans la clause WHERE d’un filtre paramétrable. @hostname est sysname, avec la valeur par défaut 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(). Si vous utilisez HOST_NAME dans une clause de filtre et remplacez la valeur HOST_NAME, il peut être nécessaire de convertir des types de données à l’aide de CONVERT. Pour plus d’informations sur les meilleures pratiques pour ce cas, consultez la section « Substitution de la valeur HOST_NAME() » dans la rubrique Filtres paramétrables - Filtres de lignes paramétrables.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Notes

sp_addmergesubscription est utilisé dans la réplication de fusion.

Lorsqu’il sp_addmergesubscription est exécuté par un membre du rôle serveur fixe sysadmin pour créer un abonnement Push, le travail Agent de fusion est implicitement créé et s’exécute sous le compte de service SQL Server Agent. 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. Pour plus d’informations, voir Replication Agent Security Model.

Exemples

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

Autorisations

Seuls les membres du rôle serveur fixe sysadmin ou db_owner rôle de base de données fixe peuvent s’exécuter sp_addmergesubscription.