Freigeben über


sp_addmergepullsubscription (Transact-SQL)

Fügt ein Pullabonnement zu einer Mergeveröffentlichung hinzu. Diese gespeicherte Prozedur wird auf dem Abonnenten für die Abonnementdatenbank ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • [ @publication=] 'publication'
    Der Name der Veröffentlichung. publication ist vom Datentyp sysname und besitzt keinen Standardwert.

  • [ @publisher=] 'publisher'
    Der Name des Verlegers. Publisher ist vom Datentyp sysname, Standardwert ist der Name des lokalen Servers. Der Verleger muss ein gültiger Server sein.

  • [ @publisher_db =] 'publisher_db'
    Der Name der Verlegerdatenbank. publisher_db ist vom Datentyp sysname, der Standardwert ist NULL.

  • [ @subscriber_type=] 'subscriber_type'
    Der Typ des Abonnenten. subscriber_type ist vom Datentyp nvarchar(15) und kann den Wert global, local oder anonymous haben. In SQL Server 2005 und höheren Versionen werden lokale Abonnements als Clientabonnements und globale Abonnements als Serverabonnements bezeichnet. Weitere Informationen finden Sie im Abschnitt zu den Abonnementtypen unter Konflikterkennung und -lösung bei der Mergereplikation.

  • [ @subscription_priority=] subscription_priority
    Die Abonnementpriorität. subscription_priorityist vom Datentyp real, der Standardwert ist NULL. Für lokale und anonyme Abonnements ist die Priorität 0.0. Die Priorität wird vom Standardresolver verwendet, um einen Gewinner zu ermitteln, wenn Konflikte erkannt werden. Für globale Abonnenten muss die Abonnementpriorität kleiner als 100 sein. Dieser Wert gibt die Priorität des Verlegers an.

  • [ @sync_type=] 'sync_type'
    Der Synchronisierungstyp des Abonnements. sync_typeist vom Datentyp nvarchar(15), der Standardwert ist automatic. Der Wert kann automatic oder none sein. Bei automatic werden das Schema und die Ausgangsdaten für veröffentlichte Tabellen zunächst an den Abonnenten übertragen. Bei none wird davon ausgegangen, dass der Abonnent bereits das Schema und die Ausgangsdaten für veröffentlichte Tabellen besitzt. Systemtabellen und Daten werden immer übertragen.

    HinweisHinweis

    Von der Angabe des Werts none wird abgeraten. Weitere Informationen finden Sie unter Initialisieren eines Mergeabonnements ohne Snapshot.

  • [ @description=] 'description'
    Eine kurze Beschreibung dieses Pullabonnements. descriptionist vom Datentyp nvarchar(255), der Standardwert ist NULL. Dieser Wert wird vom Replikationsmonitor in der Spalte Anzeigename angezeigt, die zum Sortieren der Abonnements für eine überwachte Veröffentlichung verwendet werden kann.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_addmergepullsubscription wird bei der Mergereplikation verwendet.

Wenn der SQL Server-Agent zur Synchronisierung des Abonnements verwendet wird, muss die gespeicherte Prozedur sp_addmergepullsubscription_agent auf dem Abonnenten ausgeführt werden, um einen Agent sowie einen Auftrag für die Synchronisierung mit der Veröffentlichung zu erstellen.

Beispiel

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

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_addmergepullsubscription ausführen.