Partage via


sp_addmergepullsubscription (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

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

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @publication = ] N’publication'

Nom de la publication. @publication est sysname, sans valeur par défaut.

[ @publisher = ] N’publisher'

Nom du serveur de publication. @publisher est sysname, avec une valeur par défaut du nom du serveur local. Le serveur de publication doit être un serveur valide.

[ @publisher_db = ] N’publisher_db'

Nom de la base de données du serveur de publication. @publisher_db est sysname, avec la valeur par défaut NULL.

[ @subscriber_type = ] N’subscriber_type'

Type d’Abonné. @subscriber_type est nvarchar(15), avec une valeur par défaut local, et peut être l’un des global, localou anonymous. 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

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. La priorité est utilisée par le résolveur par défaut pour déterminer un gagnant lorsque des conflits sont détectés. Pour les abonnés globaux, la priorité de l’abonnement doit être inférieure 100à celle de l’éditeur.

[ @sync_type = ] N’sync_type'

Type de synchronisation d’abonnement. @sync_type est nvarchar(15), avec la valeur par défaut automatic. Peut être automatic ou none. 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.

Nous vous recommandons de spécifier une valeur de automatic.

[ @description = ] N’description'

Brève description de cet abonnement par extraction. @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.

Valeurs des codes de retour

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

Notes

sp_addmergepullsubscription est utilisé pour la réplication de fusion.

Si vous utilisez SQL Server Agent pour synchroniser l’abonnement, la procédure stockée sp_addmergepullsubscription_agent doit être exécutée sur l’Abonné pour créer un agent et un travail à synchroniser avec la publication.

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

-- 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'AdventureWorks2022';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
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'AdventureWorks2022';
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 [AdventureWorks2022Replica]
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 db_owner rôle de base de données fixe peuvent s’exécuter sp_addmergepullsubscription.