Freigeben über


sp_addpullsubscription (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

Fügt ein Pullabonnement einer Momentaufnahmen- oder Transaktionsveröffentlichung hinzu. Diese gespeicherte Prozedur wird auf dem Abonnenten für die Datenbank ausgeführt, für die das Pullabonnement erstellt werden soll.

Transact-SQL-Syntaxkonventionen

Syntax

sp_addpullsubscription
    [ @publisher = ] N'publisher'
    [ , [ @publisher_db = ] N'publisher_db' ]
    , [ @publication = ] N'publication'
    [ , [ @independent_agent = ] N'independent_agent' ]
    [ , [ @subscription_type = ] N'subscription_type' ]
    [ , [ @description = ] N'description' ]
    [ , [ @update_mode = ] N'update_mode' ]
    [ , [ @immediate_sync = ] immediate_sync ]
[ ; ]

Argumente

[ @publisher = ] N'publisher'

Der Name des Herausgebers. @publisher ist "sysname" ohne Standard.

Hinweis

Der Servername kann für <Hostname>,<PortNumber> eine Standardinstanz oder <Hostname>\<InstanceName>,<PortNumber> für eine benannte Instanz angegeben werden. Geben Sie die Portnummer für Ihre Verbindung an, wenn SQL Server unter Linux oder Windows mit einem benutzerdefinierten Port bereitgestellt wird, und der Browserdienst ist deaktiviert. Die Verwendung von benutzerdefinierten Portnummern für Remoteverteiler gilt für SQL Server 2019 (15.x) und höhere Versionen.

[ @publisher_db = ] N'publisher_db'

Der Name der Verlegerdatenbank. @publisher_db ist "sysname" mit der Standardeinstellung "NULL. @publisher_db wird von Oracle Publishern ignoriert.

[ @publication = ] N'Publikation'

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

[ @independent_agent = ] N'independent_agent'

Gibt an, ob für diese Publikation ein eigenständiges Verteilungs-Agent vorhanden ist. @independent_agent ist nvarchar(5), mit einem Standardwert von true.

  • Wenn true, gibt es eine eigenständige Verteilungs-Agent für diese Publikation.
  • Wenn false, gibt es eine Verteilungs-Agent für jedes Publisher-Datenbank-/Abonnentendatenbankpaar.

@independent_agent ist eine Eigenschaft der Publikation und muss denselben Wert wie der Publisher aufweisen.

[ @subscription_type = ] N'subscription_type'

Der Abonnementtyp. @subscription_type ist nvarchar(9) mit einem Standardwert von anonymous. Sie müssen einen Wert für pull @subscription_type angeben, es sei denn, Sie möchten ein Abonnement erstellen, ohne das Abonnement bei Publisher zu registrieren. In diesem Fall müssen Sie einen Wert von anonymous. Dies ist für Fälle erforderlich, in denen Sie während der Abonnementkonfiguration keine SQL Server-Verbindung mit Publisher herstellen können.

[ @description = ] N'description'

Die Beschreibung der Veröffentlichung. @description ist nvarchar(100), mit einem Standardwert von NULL.

[ @update_mode = ] N'update_mode'

Die Art von Update: @update_mode ist nvarchar(30) und kann einen der folgenden Werte aufweisen.

Wert Beschreibung
read only (Standardwert) Das Abonnement ist schreibgeschützt. Alle Änderungen am Abonnenten werden nicht an den Herausgeber zurückgesendet. Sollte verwendet werden, wenn Updates nicht beim Abonnenten vorgenommen werden.
synctran Aktiviert die Unterstützung für das sofortige Aktualisieren von Abonnements.
queued tran Aktiviert das verzögerte Aktualisieren über eine Warteschlange für das Abonnement. Daten können auf dem Abonnenten geändert werden; die Änderungen werden in einer Warteschlange gespeichert und an den Verleger weitergegeben.
failover Aktiviert das sofortige Aktualisieren für das Abonnement, wobei als Failover das verzögerte Aktualisieren über eine Warteschlange verwendet wird. Daten können auf dem Abonnenten geändert werden; die Änderungen werden sofort an den Verleger weitergegeben. Wenn der Herausgeber und der Abonnent nicht verbunden sind, können Datenänderungen, die am Abonnenten vorgenommen werden, in einer Warteschlange gespeichert werden, bis der Abonnent und Publisher erneut verbunden sind.
queued failover Hinweis: Für Oracle-Herausgeber nicht unterstützt.

Ermöglicht das Abonnement als Update über eine Warteschlange, mit der Möglichkeit des Wechsels zum sofortigen Updatemodus. Daten können auf dem Abonnenten geändert und in einer Warteschlange gespeichert werden, bis eine Verbindung zwischen dem Abonnenten und dem Verleger hergestellt wird. Wenn eine kontinuierliche Verbindung hergestellt wird, kann der Updatemodus in den sofortigen Updatemodus geändert werden.

[ @immediate_sync = ] immediate_sync

Gibt an, ob die Synchronisierungsdateien bei jeder Ausführung der Momentaufnahmen-Agent erstellt oder neu erstellt werden. @immediate_sync ist bit, mit einem Standardwert von 1, und muss auf denselben Wert wie @immediate_sync in sp_addpublication festgelegt werden. @immediate_sync ist eine Eigenschaft der Publikation und muss denselben Wert wie der Publisher aufweisen.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_addpullsubscription wird in der Momentaufnahmereplikation und Transaktionsreplikation verwendet.

Wichtig

Verwenden Sie zum Aktualisieren von Abonnements in die Warteschlange sql Server-Authentifizierung für Verbindungen mit Abonnenten, und geben Sie ein anderes Konto für die Verbindung zu jedem Abonnenten an. Beim Erstellen eines Pullabonnements, das die Aktualisierung in die Warteschlange unterstützt, legt die Replikation immer die Verbindung auf die Verwendung der Windows-Authentifizierung fest (für Pullabonnements kann die Replikation nicht auf Metadaten zugreifen, die für die Verwendung der SQL Server-Authentifizierung erforderlich sind). In diesem Fall sollten Sie sp_changesubscription ausführen, um die Verbindung so zu ändern, dass die SQL Server-Authentifizierung verwendet wird, nachdem das Abonnement konfiguriert wurde.

Wenn die MSreplication_subscriptions Tabelle beim Abonnenten nicht vorhanden ist, sp_addpullsubscription wird sie erstellt. Außerdem wird der MSreplication_subscriptions Tabelle eine Zeile hinzugefügt. Bei Pullabonnements sollte sp_addsubscription zuerst beim Publisher aufgerufen werden.

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;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2022Replica]
EXEC sp_addpullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

Berechtigungen

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