sp_addsubscription (Transact-SQL)

Fügt einer Publikation ein Abonnement hinzu und legt den Status des Abonnenten fest. Diese gespeicherte Prozedur wird beim Verleger mit der Publikationsdatenbank ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_addsubscription [ @publication = ] 'publication'
    [ , [ @article = ] 'article']
    [ , [ @subscriber = ] 'subscriber' ]
    [ , [ @destination_db = ] 'destination_db' ]
    [ , [ @sync_type = ] 'sync_type' ]
    [ , [ @status = ] 'status'
    [ , [ @subscription_type = ] 'subscription_type' ]
    [ , [ @update_mode = ] 'update_mode' ]
    [ , [ @loopback_detection = ] 'loopback_detection' ]
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @optional_command_line = ] 'optional_command_line' ]
    [ , [ @reserved = ] 'reserved' ]
    [ , [ @enabled_for_syncmgr= ] 'enabled_for_syncmgr' ]
    [ , [ @offloadagent= ] remote_agent_activation]
    [ , [ @offloadserver= ] 'remote_agent_server_name' ]
    [ , [ @dts_package_name= ] 'dts_package_name' ]
    [ , [ @dts_package_password= ] 'dts_package_password' ]
    [ , [ @dts_package_location= ] 'dts_package_location' ]
    [ , [ @distribution_job_name= ] 'distribution_job_name' ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @backupdevicetype = ] 'backupdevicetype' ]
    [ , [ @backupdevicename = ] 'backupdevicename' ]
    [ , [ @mediapassword = ] 'mediapassword' ]
    [ , [ @password = ] 'password' ]
    [ , [ @fileidhint = ] fileidhint ]
    [ , [ @unload = ] unload ]
    [ , [ @subscriptionlsn = ] subscriptionlsn ]
    [ , [ @subscriptionstreams = ] subscriptionstreams ]
    [ , [ @subscriber_type = ] subscriber_type ]

Argumente

  • [ @publication=] 'publication'
    Der Name der Publikation. publication ist vom Datentyp sysname und hat keinen Standard.
  • [ @article = ] 'article'
    Der Name des Artikels, für den die Publikation abonniert wird. article ist ein Wert vom Datentyp sysname, der Standardwert ist all. Wird all angegeben, wird allen Artikeln dieser Publikation ein Abonnement hinzugefügt. Nur die Werte all oder NULL werden für Oracle-Verleger unterstützt.
  • [ @subscriber=] 'subscriber'
    Der Name des Abonnenten. subscriber ist ein Wert vom Datentyp sysname, der Standardwert ist NULL.
  • [ @destination_db=] 'destination_db'
    Der Name der Zieldatenbank, in der die replizierten Daten gespeichert werden sollen. destination_db ist vom Datentyp sysname, der Standardwert ist NULL. Mit NULL wird destination_db auf den Namen der Publikationsdatenbank festgelegt. Für Oracle-Verleger muss destination_db angegeben werden. Geben Sie für einen Nicht-SQL Server-Abonnenten den Wert (Standardziel) für destination_db an.
  • [ @sync_type=] 'sync_type'
    Der Synchronisierungstyp des Abonnements. sync_type ist vom Datentyp nvarchar(255). Die folgenden Werte sind möglich:

    Wert

  • [ @status=] 'status'
    Der Status des Abonnements. status ist vom Datentyp sysname; der Standardwert ist NULL. Wenn dieser Parameter nicht explizit festgelegt wird, wird er von der Replikation automatisch auf einen der folgenden Werte festgelegt.

    Wert Beschreibung

    Aktiv

    Das Abonnement wird initialisiert und ist bereit, Änderungen anzunehmen. Diese Option wird festgelegt, wenn sync_type den Wert none, initialize with backup oder replication support only aufweist.

    subscribed

    Das Abonnement muss initialisiert werden. Diese Option wird festgelegt, wenn sync_type den Wert automatic aufweist.

  • [ @subscription_type=] 'subscription_type'
    Der Abonnementtyp. subscription_type ist vom Datentyp nvarchar(4), der Standardwert ist push. Mögliche Werte sind push und pull. Die Verteilungs-Agents von Pushabonnements befinden sich auf dem Verteiler und die Verteilungs-Agents von Pullabonnements auf dem Abonnenten. subscription_type kann ein Wert vom Typ pull sein, um ein benanntes Pullabonnement zu erstellen, das dem Verleger bekannt ist. Weitere Informationen finden Sie unter Abonnieren von Publikationen.

    ms181702.note(de-de,SQL.90).gifHinweis:
    Für anonyme Abonnements ist diese gespeicherte Prozedur nicht erforderlich.
  • [ @update_mode=] 'update_mode'
    Der Aktualisierungstyp*.* update_mode ist vom Datentyp nvarchar(30). Die folgenden Werte sind möglich.

    Wert Beschreibung

    read only (Standard)

    Das Abonnement ist schreibgeschützt. Änderungen am Abonnenten werden nicht an den Verleger gesendet.

    sync tran

    Aktiviert die Unterstützung für das sofortige Aktualisieren von Abonnements. Diese Option wird für Oracle-Verleger nicht unterstützt.

    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. Diese Option wird für Oracle-Verleger nicht unterstützt.

    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, kann der Aktualisierungsmodus geändert werden, damit Datenänderungen auf dem Abonnenten in einer Warteschlange gespeichert werden, bis Abonnent und Verleger erneut verbunden sind. Diese Option wird für Oracle-Verleger nicht unterstützt.

    queued failover

    Ermöglicht das Abonnement als Aktualisierung über eine Warteschlange, mit der Möglichkeit des Wechsels zum sofortigen Aktualisierungsmodus. 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 Aktualisierungsmodus in den sofortigen Aktualisierungsmodus geändert werden. Diese Option wird für Oracle-Verleger nicht unterstützt.

    Beachten Sie, dass die Werte synctran und queued tran nicht zulässig sind, wenn die abonnierte Publikation DTS zulässt.

  • [ @loopback_detection=] 'loopback_detection'
    Gibt an, ob der Verteilungs-Agent Transaktionen des Abonnenten an den Abonnenten zurücksendet. loopback_detection ist ein Wert vom Datentyp nvarchar(5). Die folgenden Werte sind möglich.

    Wert Beschreibung

    true

    Der Verteilungs-Agent sendet Transaktionen des Abonnenten nicht an den Abonnenten zurück. Diese Option wird für die bidirektionale Transaktionsreplikation verwendet. Weitere Informationen finden Sie unter Bidirektionale Transaktionsreplikation.

    false

    Der Verteilungs-Agent sendet Transaktionen des Abonnenten an den Abonnenten zurück.

    NULL (Standard)

    Wird für einen SQL Server-Abonnenten automatisch auf true und für einen Nicht-SQL Server-Abonnenten auf false festgelegt.

  • [ @frequency_type=] frequency_type
    Die Häufigkeit für die Zeitplanung des Verteilungstasks. frequency_type ist vom Datentyp int. Die folgenden Werte sind möglich.

    Wert Beschreibung

    1

    Einmal

    2

    Nur bei Bedarf

    4

    Täglich

    8

    Wöchentlich

    16

    Monatlich

    32

    Monatlich, relativ

    64 (Standard)

    Autostart

    128

    Wiederholt

  • [ @frequency_interval=] frequency_interval
    Der Wert für die von frequency_type festgelegte Häufigkeit. frequency_interval ist vom Datentyp int; der Standard ist NULL.
  • [ @frequency_relative_interval=] frequency_relative_interval
    Das Datum des Verteilungs-Agents. Dieser Parameter wird verwendet, wenn frequency_type auf 32 (monatlich, relativ) festgelegt ist. frequency_relative_interval ist vom Datentyp int. Die folgenden Werte sind möglich.

    Wert Beschreibung

    1

    Erster

    2

    Zweiter

    4

    Dritter

    8

    Vierter

    16

    Letzter

    NULL (Standard)

     

  • [ @frequency_recurrence_factor=] frequency_recurrence_factor
    Der von frequency_type verwendete Wiederholungsfaktor. frequency_recurrence_factor ist ein Wert vom Datentyp int, der Standardwert ist NULL.
  • [ @frequency_subday=] frequency_subday
    Die Häufigkeit (in Minuten) für die erneute geplante Ausführung während des definierten Zeitraumes. frequency_subday ist vom Datentyp int und kann einen der folgenden Werte haben.

    Wert Beschreibung

    1

    Einmal

    2

    Sekunde

    4

    Minute

    8

    Stunde

    NULL

     

  • [ @frequency_subday_interval=] frequency_subday_interval
    Das Intervall für frequency_subday. frequency_subday_interval ist vom Datentyp int und hat den Standardwert NULL.
  • [ @active_start_time_of_day=] active_start_time_of_day
    Der Zeitpunkt, zu dem der Verteilungs-Agent zum ersten Mal geplant ist. Dabei wird das Format HHMMSS verwendet. active_start_time_of_day ist ein Wert vom Datentyp int, der Standardwert ist NULL.
  • [ @active_end_time_of_day=] active_end_time_of_day
    Der Zeitpunkt, zu dem der Verteilungs-Agent nicht mehr geplant ist. Dabei wird das Format HHMMSS verwendet. active_end_time_of_day ist ein Wert vom Datentyp int, der Standardwert ist NULL.
  • [ @active_start_date=] active_start_date
    Das Datum, an dem der Verteilungs-Agent zum ersten Mal geplant ist. Dabei wird das Format YYYYMMDD verwendet. active_start_date ist vom Datentyp int, der Standardwert ist NULL.
  • [ @active_end_date=] active_end_date
    Das Datum, an dem der Verteilungs-Agent nicht mehr geplant ist. Dabei wird das Format YYYYMMDD verwendet. active_end_date ist vom Datentyp int, der Standardwert ist NULL.
  • [ @optional_command_line=] 'optional_command_line'
    Die optional auszuführende Befehlszeile. optional_command_line ist ein Wert vom Datentyp nvarchar(4000); der Standardwert ist NULL.
  • [ @reserved=] 'reserved'
    Nur für die interne Verwendung.
  • [ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
    Gibt an, ob das Abonnement mit der Synchronisierungsverwaltung von Microsoft Windows synchronisiert werden kann. enabled_for_syncmgr ist vom Datentyp nvarchar(5), der Standardwert ist FALSE. Mit false wird das Abonnement nicht bei der Windows-Synchronisierungsverwaltung registriert. Mit true wird das Abonnement bei der Windows-Synchronisierungsverwaltung registriert und kann synchronisiert werden, ohne SQL Server Management Studio zu starten. Diese Option wird für Oracle-Verleger nicht unterstützt.
  • [ @offloadagent= ] 'remote_agent_activation'
    Gibt an, dass für den Agent eine Remoteaktivierung möglich ist. remote_agent_activation ist ein Wert vom Datentyp bit, der Standardwert ist 0.

    ms181702.note(de-de,SQL.90).gifHinweis:
    Dieser Parameter wurde als veraltet markiert und wird nur aus Gründen der Abwärtskompatibilität von Skripts bereitgestellt.
  • [ @offloadserver= ] 'remote_agent_server_name'
    Gibt den Netzwerknamen des Servers an, der für die Remoteaktivierung verwendet werden soll. remote_agent_server_name ist vom Datentyp sysname, der Standardwert ist NULL.
  • [ @dts_package_name= ] 'dts_package_name'
    Gibt den Namen des DTS-Pakets (Data Transformation Services) an. dts_package_name ist ein Wert vom Datentyp sysname, der Standardwert ist NULL. Um z. B. ein Paket namens DTSPub_Package anzugeben, wird der Parameter @dts_package_name = N'DTSPub_Package' verwendet. Dieser Parameter ist für Pushabonnements verfügbar. Verwenden Sie sp_addpullsubscription_agent, um einem Pullabonnement DTS-Paketinformationen hinzuzufügen.
  • [ @dts_package_password= ] 'dts_package_password'
    Gibt gegebenenfalls das Kennwort des Pakets an. dts_package_password ist vom Datentyp sysname, der Standardwert ist NULL.

    ms181702.note(de-de,SQL.90).gifHinweis:
    Sie müssen ein Kennwort angeben, wenn dts_package_name angegeben wird.
  • [ @dts_package_location= ] 'dts_package_location'
    Gibt den Speicherort für das Paket an. dts_package_location ist vom Datentyp nvarchar(12), der Standardwert ist DISTRIBUTOR. Der Speicherort des Pakets kann distributor oder subscriber sein.
  • [ @distribution_job_name= ] 'distribution_job_name'
    Nur für die interne Verwendung.
  • [ @publisher= ] 'publisher'
    Gibt einen Nicht-Microsoft SQL Server-Verleger an. publisher ist vom Datentyp sysname; der Standardwert ist NULL.

    ms181702.note(de-de,SQL.90).gifHinweis:
    publisher sollte nicht für einen SQL Server-Verleger angegeben werden.
  • [ @backupdevicetype= ] 'backupdevicetype'
    Gibt den Sicherungsmedientyp an, der beim Initialisieren eines Abonnenten von einer Sicherung verwendet wird. backupdevicetype ist vom Datentyp nvarchar(20). Die folgenden Werte sind möglich:

    Wert Beschreibung

    logical (Standard)

    Das Sicherungsmedium ist ein logisches Medium.

    disk

    Das Sicherungsmedium ist ein Laufwerk.

    tape

    Das Sicherungsmedium ist ein Bandlaufwerk.

    backupdevicetype wird nur verwendet, wenn sync_method auf initialize_with_backup festgelegt ist.

  • [ @backupdevicename= ] 'backupdevicename'
    Gibt den Namen des Sicherungsmediums an, das beim Initialisieren eines Abonnenten von einer Sicherung verwendet wird. backupdevicename ist ein Wert vom Datentyp nvarchar(1000), der Standardwert ist NULL.
  • [ @mediapassword= ] 'mediapassword'
    Gibt ein Kennwort für den Mediensatz an, falls beim Formatieren des Mediums ein Kennwort festgelegt wurde. mediapassword ist vom Datentyp sysname, der Standardwert ist NULL.
  • [ @password = ] 'password'
    Gibt ein Kennwort für die Sicherung an, falls beim Erstellen der Sicherung ein Kennwort festgelegt wurde. passwordist vom Datentyp sysname, der Standardwert ist NULL.
  • [ @fileidhint= ] fileidhint
    Identifiziert einen Ordnungswert des wiederherzustellenden Sicherungssatzes. fileidhint ist ein Wert vom Datentyp int, der Standardwert ist NULL.
  • [ @unload= ] unload
    Gibt an, ob ein Datensicherungsmedium nach Abschluss der Initialisierung von der Sicherung entladen werden soll. unload ist ein Wert vom Datentyp bit, der Standardwert ist 1. 1 gibt an, dass das Band entladen werden soll. unload wird nur verwendet, wenn backupdevicetype gleich tape ist.
  • [ @subscriptionlsn= ] subscriptionlsn
    Nur für die interne Verwendung.
  • [ @subscriptionstreams= ] subscriptionstreams
    Die Anzahl zulässiger Verbindungen pro Verteilungs-Agent, um Änderungsbatches parallel auf einen Abonnenten anzuwenden, während viele Transaktionsmerkmale beibehalten werden, die bei Verwendung eines einzigen Threads vorhanden sind. subscriptionstreams ist ein Wert vom Datentyp tinyint, der Standardwert ist NULL. Mögliche Werte zwischen 1 und 64 werden unterstützt. Dieser Parameter wird für Nicht-SQL Server-Abonnenten, Oracle-Verleger oder Peer-to-Peer-Abonnements nicht unterstützt.
  • [ @subscriber_type=] subscriber_type
    Der Abonnententyp. subscriber_type ist ein Wert vom Datentyp tinyint. Die folgenden Werte sind möglich.

    Wert Beschreibung

    0 (Standard)

    SQL Server-Abonnent

    1

    ODBC-Datenquellenserver

    2

    Microsoft Jet-Datenbank

    3

    OLE DB-Anbieter (OLE DB provider)

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_addsubscription wird bei der Snapshot- und Transaktionsreplikation verwendet.

Wenn sp_addsubscription von einem Mitglied der festen Serverrolle sysadmin ausgeführt wird, um ein Pushabonnement zu erstellen, wird der Auftrag des Verteilungs-Agents implizit erstellt und wird unter dem Konto des SQL Server-Agent-Dienstes ausgeführt. Sie sollten sp_addpushsubscription_agent ausführen und die Anmeldeinformationen eines anderen, agentspezifischen Windows-Kontos für @job_login und @job_password angeben. Weitere Informationen finden Sie unter Sicherheitsmodell des Replikations-Agents.

sp_addsubscription hindert ODBC- und OLE DB-Abonnenten am Zugriff auf folgende Publikationen:

  • Publikationen, die durch einen Aufruf von sp_addpublication mit dem Wert native für sync_method erstellt wurden.
  • Publikationen, die Artikel enthalten, welche der Publikation mit der gespeicherten Prozedur sp_addarticle und dem Wert 3 (Abschneiden) für den pre_creation_cmd-Parameter hinzugefügt wurden.
  • Publikationen, die versuchen, update_mode auf sync tran festzulegen.
  • Publikationen, bei denen ein Artikel für die Verwendung parametrisierter Anweisungen konfiguriert ist.

Wenn für eine Publikation die Option allow_queued_tran auf true festgelegt ist (wodurch Änderungen auf dem Abonnenten in eine Warteschlange platziert werden, bis sie auf dem Verleger angewendet werden können), wird die timestamp-Spalte in einem Artikel als timestamp ausgegeben, und Änderungen an dieser Spalte werden an den Abonnenten gesendet. Der Abonnent generiert und aktualisiert den Wert der timestamp-Spalte. Für einen ODBC- oder OLE DB-Abonnenten meldet sp_addsubscription einen Fehler beim Abonnieren einer Publikation, für die allow_queued_tran auf true festgelegt ist und Artikel mit timestamp-Spalten enthält.

Wenn ein Abonnement kein DTS-Paket verwendet, kann es keine Publikation abonnieren, für die allow_transformable_subscriptions festgelegt ist. Wenn die Tabelle der Publikation für ein DTS-Abonnement und ein Nicht-DTS-Abonnement repliziert werden muss, müssen zwei separate Publikationen erstellt werden: eine für jeden Abonnementtyp.

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_addsubscription ausführen. Für Pullabonnements können Benutzer, deren Anmeldename in der Publikationszugriffsliste eingetragen ist, sp_addsubscription ausführen.

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

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks]
EXEC sp_addsubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @destination_db = @subscriptionDB, 
  @subscription_type = N'push';

--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

Siehe auch

Verweis

sp_addpushsubscription_agent (Transact-SQL)
sp_changesubstatus (Transact-SQL)
sp_dropsubscription (Transact-SQL)
sp_helpsubscription (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)

Andere Ressourcen

Vorgehensweise: Erstellen eines Pushabonnements (Replikationsprogrammierung mit Transact-SQL)
How to: Create a Subscription for a Non-SQL Server Subscriber (Replication Transact-SQL Programming)
Abonnieren von Publikationen

Hilfe und Informationen

Informationsquellen für SQL Server 2005