Freigeben über


sp_addmergepullsubscription (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

Fügt ein Pullabonnement zu einer Mergeveröffentlichung hinzu. Diese gespeicherte Prozedur wird beim Abonnenten in der Abonnementdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

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' ]
[ ; ]

Argumente

[ @publication = ] N'Publikation'

Der Name der Veröffentlichung. @publication ist "sysname" ohne Standard.

[ @publisher = ] N'publisher'

Der Name des Herausgebers. @publisher ist "sysname" mit einem Standardwert des lokalen Servernamens. Der Verleger muss ein gültiger Server sein.

[ @publisher_db = ] N'publisher_db'

Der Name der Verlegerdatenbank. @publisher_db ist "sysname" mit der Standardeinstellung "NULL.

[ @subscriber_type = ] N'subscriber_type'

Der Typ des Abonnenten. @subscriber_type ist nvarchar(15), mit einem Standardwert von local, und kann eine von global, , localoder anonymous. In SQL Server 2005 (9.x) und höheren Versionen werden lokale Abonnements als Clientabonnements bezeichnet, und globale Abonnements werden als Serverabonnements bezeichnet.

[ @subscription_priority = ] subscription_priority

Die Priorität des Abonnements. @subscription_priority ist real, mit einem Standardwert von NULL. Für lokale und anonyme Abonnements ist 0.0die Priorität . Die Priorität wird vom Standardresolver verwendet, um einen Gewinner zu ermitteln, wenn Konflikte erkannt werden. Bei globalen Abonnenten muss die Abonnementpriorität kleiner als 100sein , was die Priorität des Herausgebers ist.

[ @sync_type = ] N'sync_type'

Der Abonnementsynchronisierungstyp. @sync_type ist "nvarchar(15)" mit einem Standardwert von automatic. Kann automatic oder none sein. Wenn automaticdie Schema- und Ausgangsdaten für veröffentlichte Tabellen zuerst an den Abonnenten übertragen werden. Wenn nonedavon ausgegangen wird, dass der Abonnent bereits das Schema und die anfänglichen Daten für veröffentlichte Tabellen enthält. Systemtabellen und Daten werden immer übertragen.

Es wird empfohlen, einen Wert von automatic.

[ @description = ] N'description'

Eine kurze Beschreibung dieses Pullabonnements. @description ist nvarchar(255), mit einem Standardwert von NULL. Dieser Wert wird vom Replikationsmonitor in der Friendly Name Spalte angezeigt, mit dem die Abonnements für eine überwachte Publikation sortiert werden können.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_addmergepullsubscription wird für die Seriendruckreplikation verwendet.

Wenn Sie SQL Server-Agent verwenden, um das Abonnement zu synchronisieren, muss die sp_addmergepullsubscription_agent gespeicherte Prozedur beim Abonnenten ausgeführt werden, um einen Agent und einen Auftrag zu erstellen, der mit der Publikation synchronisiert werden soll.

Beispiele


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

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder db_owner feste Datenbankrolle können ausgeführt werden sp_addmergepullsubscription.