Partager via


sp_addmergepullsubscription (Transact-SQL)

Ajoute un abonnement par extraction de données (pull) à une publication de fusion. Cette procédure stockée est exécutée sur la base de données d'abonnement de l'Abonné.

Icône Lien de rubriqueConventions de la syntaxe Transact-SQL

Syntaxe

sp_addmergepullsubscription [ @publication= ] 'publication' 
    [ , [ @publisher= ] 'publisher' ] 
    [ , [ @publisher_db = ] 'publisher_db' ] 
    [ , [ @subscriber_type= ] 'subscriber_type' ] 
    [ , [ @subscription_priority= ] subscription_priority ] 
    [ , [ @sync_type= ] 'sync_type' ] 
    [ , [ @description= ] 'description' ]

Arguments

  • [ @publication=] 'publication'
    Nom de la publication. L'argument publication est de type sysname et n'a pas de valeur par défaut.

  • [ @publisher = ] 'publisher'
    Nom du serveur de publication. L'argument Publisher est de type sysname. Sa valeur par défaut est le nom du serveur local. Le serveur de publication doit être un serveur valide.

  • [ @publisher_db=] 'publisher_db'
    Nom de la base de données du serveur de publication. L'argument publisher_db est de type sysname, avec NULL comme valeur par défaut.

  • [ @subscriber_type=] 'subscriber_type'
    Type d'Abonné. L'argument subscriber_type est de type nvarchar(15) et peut avoir la valeur global, local ou anonymous. 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'abonnements » dans Comment la réplication de fusion détecte et résout les conflits.

  • [ @subscription_priority=] subscription_priority
    Priorité de l'abonnement. L'argument subscription_priority est de type real, avec NULL comme valeur par défaut. Pour les abonnements locaux et anonymes, la priorité est 0.0. La priorité est utilisée par le résolveur par défaut pour choisir un gagnant lorsque des conflits sont détectés. Pour les abonnés globaux, la priorité de l'abonnement doit être inférieure à 100, qui correspond à la priorité du serveur de publication.

  • [ @sync_type=] 'sync_type'
    Type de synchronisation d'abonnement. L'argument sync_typeest de type nvarchar(15), avec la valeur par défaut automatic. La valeur 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 d'abord vers l'Abonné. Si la valeur est 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 ne recommandons pas de spécifier la valeur none. Pour plus d'informations, consultez Initialisation d'une réplication de fusion sans capture instantanée.

  • [ @description = ] 'description'
    Brève description de l'abonnement par extraction de données (pull). L'argument descriptionest de type nvarchar(255), avec la valeur par défaut NULL. Cette valeur est affichée par le Moniteur de réplication dans la colonne Friendly Name, qui peut être utilisée pour trier les abonnements d'une publication contrôlée.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Notes

sp_addmergepullsubscription est utilisé pour la publication de fusion.

Si vous utilisez l'Agent SQL Server pour synchroniser l'abonnement, la procédure stockée sp_addmergepullsubscription_agent doit être exécutée au niveau de l'Abonné pour créer un Agent et un travail pour la synchronisation avec la publication.

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

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorksReplica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password),
  @hostname = @hostname;
GO
-- 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".

-- Publication must support anonymous Subscribers.
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @websyncurl AS sysname;
DECLARE @security_mode AS int;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksSalesOrdersMergeWebSync';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';
SET @websyncurl = 'https://' + $(WebServer) + '/WebSync';
SET @security_mode = 0; -- Basic Authentication for IIS
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorksReplica]
EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB,
    @subscriber_type = N'anonymous';

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher, 
    @job_login = @login, 
    @job_password = @password,
    @use_web_sync = 1,
    @internet_security_mode = @security_mode,
    @internet_url = @websyncurl,
    @internet_login = @login,
    @internet_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_addmergepullsubscription.