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 au niveau de l'Abonné.

Icône Lien de rubrique Conventions de la syntaxe de 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. publication est de type sysname et n'a pas de valeur par défaut.

  • [ @publisher=] 'publisher'
    Nom du serveur de publication. 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. publisher_db est de type sysname, avec NULL comme valeur par défaut.

  • [ @subscriber_type=] 'subscriber_type'
    Type d'abonné. 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.

  • [ @subscription_priority=] subscription_priority
    Priorité de l'abonnement. subscription_priorityest 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. sync_typeest de type nvarchar(15), avec automatic comme valeur par défaut. 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.

  • [ @description=] 'description'
    Brève description de l'abonnement par extraction de données (pull). 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 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'AdventureWorks2012';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2012Replica]
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'AdventureWorks2012';
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 [AdventureWorks2012Replica]
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.

Voir aussi

Référence

sp_addmergepullsubscription_agent (Transact-SQL)

sp_changemergepullsubscription (Transact-SQL)

sp_dropmergepullsubscription (Transact-SQL)

sp_helpmergepullsubscription (Transact-SQL)

sp_helpsubscription_properties (Transact-SQL)

Concepts

Créer un abonnement par extraction de données (pull)

S'abonner à des publications