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.

Icône Lien de rubrique 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)

Résolution interactive des conflits

S'abonner à des publications