Partager via


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 sur le serveur de publication dans la base de données de publication.

Icône Lien de rubriqueConventions 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. L'argument publication est de type sysname, sans valeur par défaut. La publication doit déjà exister.

  • [ @subscriber=] 'subscriber'
    Nom de l'Abonné. L'argument 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. L'argument subscriber_db est de type sysname, avec NULL comme valeur par défaut.

  • [ @subscription_type=] 'subscription_type'
    Type d'abonnement. L'argument subscription_type est 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 de l'abonné. L'argument subscriber_type est de type nvarchar(15) et peut avoir 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. Pour plus d'informations, consultez la section « Types d'abonnement » dans Comment la réplication de fusion détecte et résout les conflits.

  • [ @subscription_priority=] subscription_priority
    Nombre qui indique la priorité affectée à l'abonnement. L'argument subscription_priorityest de type real, avec la valeur NULL 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. L'argument 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. Pour plus d'informations, consultez Initialisation d'une réplication de fusion sans capture instantanée.

  • [ @frequency_type=] frequency_type
    Valeur indiquant le moment où l'Agent de fusion est exécuté. L'argument frequency_type est de type int et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    1

    Une fois

    4

    Quotidiennement

    8

    Hebdomadairement

    10

    Mensuellement

    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 est exécuté. L'argument 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 (valeur par défaut)

     

  • [ @frequency_relative_interval=] frequency_relative_interval
    Occurrence de fusion planifiée de l'intervalle de fréquence pour chaque mois. L'argument frequency_relative_interval est de type int et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    1

    Premier

    2

    Deuxième

    4

    Troisième

    8

    Quatrième

    16

    Dernier

    NULL (valeur par défaut)

     

  • [ @frequency_recurrence_factor=] frequency_recurrence_factor
    Facteur de récurrence utilisé par frequency_type. L'argument frequency_recurrence_factorest de type int, avec NULL comme valeur par défaut.

  • [ @frequency_subday=] frequency_subday
    Unité pour frequency_subday_interval. L'argument 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 (valeur par défaut)

     

  • [ @frequency_subday_interval=] frequency_subday_interval
    Fréquence à laquelle frequency_subday doit se produire entre chaque fusion. L'argument frequency_subday_interval est de type int, avec la valeur NULL par défaut.

  • [ @active_start_time_of_day=] active_start_time_of_day
    Heure de la journée à laquelle l'Agent de fusion est planifié pour la première fois, représentée au format HHMMSS. L'argument 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 de la journée à laquelle l'Agent de fusion cesse d'être planifié, représentée au format HHMMSS. L'argument 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, représentée au format AAAAMMJJ. L'argument 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é, représentée au format AAAAMMJJ. L'argument 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. L'argument 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 l'abonnement de fusion. L'argument 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é par le Gestionnaire de synchronisation Microsoft Windows. L'argument 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 MicrosoftSQL Server Management Studio.

  • [ @offloadagent= ] remote_agent_activation
    Indique que l'Agent peut être activé à distance. L'argument remote_agent_activation est de type bit, avec 0 comme valeur par défaut.

    [!REMARQUE]

    Ce paramètre a été désapprouvé et n'est conservé que pour la compatibilité descendante des scripts.

  • [ @offloadserver= ] 'remote_agent_server_name'
    Indique le nom réseau du serveur à utiliser pour l'activation de l'Agent à distance. L'argument remote_agent_server_nameest de type sysname, avec NULL comme valeur par défaut.

  • [ @use_interactive_resolver= ] 'use_interactive_resolver'
    Permet de résoudre les conflits de manière interactive pour tous les articles autorisant la résolution interactive. L'argument use_interactive_resolver est de type nvarchar(5), avec FALSE comme valeur par défaut.

  • [ @merge_job_name= ] 'merge_job_name'
    Nom du travail d'Agent de fusion ajouté pour cet abonnement. merge_job_name est de type sysname, avec NULL comme valeur par défaut. Ce paramètre permet de fournir un nom de travail d'Agent de fusion en vue de l'administration ultérieure de ce travail.

  • [ @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é. L'argument 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 [AdventureWorks]
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.