Freigeben über


sp_addpullsubscription (Transact-SQL)

Fügt ein Pullabonnement einer Snapshot- 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.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • [ @publisher=] 'publisher'
    Der Name des Verlegers. publisher ist ein Wert vom Datentyp sysname und hat keinen Standardwert.

  • [ @publisher_db=] 'publisher_db'
    Der Name der Verlegerdatenbank. publisher_db ist ein Wert vom Datentyp sysname. Der Standardwert ist NULL. publisher_db wird von Oracle-Verlegern ignoriert.

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

  • [ @independent_agent=] 'independent_agent'
    Gibt an, ob ein eigenständiger Verteilungs-Agent für diese Veröffentlichung vorhanden ist. independent_agent ist ein Wert vom Datentyp nvarchar(5), und der Standardwert ist TRUE. Bei true ist ein eigenständiger Verteilungs-Agent für diese Veröffentlichung vorhanden. Bei false ist ein Verteilungs-Agent für jedes Paar aus Verlegerdatenbank und Abonnentendatenbank vorhanden. independent_agent ist eine Eigenschaft der Veröffentlichung. Sie muss hier denselben Wert wie auf dem Verleger haben.

  • [ @subscription_type=] 'subscription_type'
    Der Abonnementtyp. subscription_type ist ein Wert vom Datentyp nvarchar(9), und der Standardwert ist anonymous. Sie müssen für subscription_type den Wert pull angeben, es sei denn, Sie möchten ein Abonnement erstellen, ohne das Abonnement auf dem Verleger zu registrieren. In diesem Fall müssen Sie den Wert anonymous angeben. Dies ist notwendig für Fälle, in denen Sie während der Abonnementkonfiguration keine SQL Server-Verbindung mit dem Verleger herstellen können.

  • [ @description =] 'description'
    Die Beschreibung der Veröffentlichung. description ist ein Wert vom Datentyp nvarchar(100). Der Standardwert ist NULL.

  • [ @update_mode=] 'update_mode'
    Der Aktualisierungstyp. update_mode ist ein Wert vom Datentyp nvarchar(30) und kann einen der folgenden Werte annehmen.

    Wert

    Beschreibung

    read only (Standard)

    Das Abonnement ist schreibgeschützt. Änderungen am Abonnenten werden nicht an den Verleger zurückgesendet. Sollte verwendet werden, wenn Aktualisierungen nicht auf dem 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 dann 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 Verleger und der Abonnent nicht verbunden sind, können Datenänderungen auf dem Abonnenten in einer Warteschlange gespeichert werden, bis Abonnent und Verleger erneut verbunden sind.

    queued failover

    Aktiviert das Abonnement als Abonnement mit verzögertem Update über eine Warteschlange mit der Möglichkeit, in den Sofortaktualisierungsmodus zu wechseln. Datenänderungen können auf dem Abonnenten vorgenommen 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 Aktualisierungsmodus in den Sofortaktualisierungsmodus geändert werden. Wird für Oracle-Verleger nicht unterstützt.

  • [ @immediate_sync =] immediate_sync
    Gibt an, ob die Synchronisierungsdateien bei jeder Ausführung des Snapshot-Agents erstellt oder neu erstellt werden. immediate_sync ist vom Datentyp bit und der Standardwert ist 1. Der Parameter muss auf den gleichen Wert festgelegt werden wie immediate_sync in sp_addpublication.immediate_sync ist eine Eigenschaft der Veröffentlichung und muss hier denselben Wert wie auf dem Verleger haben.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_addpullsubscription wird bei der Snapshot- und Transaktionsreplikation verwendet.

SicherheitshinweisSicherheitshinweis

Bei Abonnements mit verzögerter Aktualisierung über eine Warteschlange verwenden Sie die SQL Server-Authentifizierung für Verbindungen mit Abonnenten. Geben Sie für die Verbindung zu den einzelnen Abonnenten jeweils ein anderes Konto an. Beim Erstellen eines Pullabonnements, das die verzögerte Aktualisierung über eine Warteschlange unterstützt, legt die Replikation immer die Verwendung der Windows-Authentifizierung für die Verbindung fest (für Pullabonnements kann die Replikation nicht auf Metadaten beim Abonnenten zugreifen, die für die Verwendung der SQL Server-Authentifizierung erforderlich sind). In diesem Fall sollten Sie nach dem Konfigurieren des Abonnements sp_changesubscription ausführen, um die Verbindung zu ändern, damit die SQL Server-Authentifizierung verwendet wird.

Falls die MSreplication_subscriptions (Transact-SQL)-Tabelle nicht auf dem Abonnenten vorhanden ist, wird sie von sp_addpullsubscription erstellt. Außerdem fügt sp_addpullsubscription der MSreplication_subscriptions (Transact-SQL)-Tabelle eine Zeile hinzu. Für Pullabonnements sollte sp_addsubscription (Transact-SQL) zuerst auf dem Verleger aufgerufen werden.

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

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorksReplica]
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 der festen Datenbankrolle db_owner können sp_addpullsubscription ausführen.