sp_addsubscription (Transact-SQL)

Gilt für:SQL ServerAzure SQL-Datenbank

Fügt einer Veröffentlichung ein Abonnement hinzu und legt den Status des Abonnenten fest. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

sp_addsubscription
    [ @publication = ] N'publication'
    [ , [ @article = ] N'article' ]
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @destination_db = ] N'destination_db' ]
    [ , [ @sync_type = ] N'sync_type' ]
    [ , [ @status = ] N'status' ]
    [ , [ @subscription_type = ] N'subscription_type' ]
    [ , [ @update_mode = ] N'update_mode' ]
    [ , [ @loopback_detection = ] N'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 = ] N'optional_command_line' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @offloadagent = ] offloadagent ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @dts_package_name = ] N'dts_package_name' ]
    [ , [ @dts_package_password = ] N'dts_package_password' ]
    [ , [ @dts_package_location = ] N'dts_package_location' ]
    [ , [ @distribution_job_name = ] N'distribution_job_name' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @backupdevicetype = ] N'backupdevicetype' ]
    [ , [ @backupdevicename = ] N'backupdevicename' ]
    [ , [ @mediapassword = ] N'mediapassword' ]
    [ , [ @password = ] N'password' ]
    [ , [ @fileidhint = ] fileidhint ]
    [ , [ @unload = ] unload ]
    [ , [ @subscriptionlsn = ] subscriptionlsn ]
    [ , [ @subscriptionstreams = ] subscriptionstreams ]
    [ , [ @subscriber_type = ] subscriber_type ]
    [ , [ @memory_optimized = ] memory_optimized ]
[ ; ]

Argumente

[ @publication = ] N'Publikation'

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

[ @article = ] N'article'

Der Artikel, für den die Publikation abonniert ist. @article ist "sysname" mit der Standardeinstellung "all. If all, a subscription is added to all articles in that publication. Nur Werte von all oder NULL werden für Oracle Publisher unterstützt.

[ @subscriber = ] N'subscriber'

Den Namen des Abonnenten. @subscriber ist "sysname" mit der Standardeinstellung "NULL.

Hinweis

Der Servername kann als <Hostname>,<PortNumber>. 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.

[ @destination_db = ] N'destination_db'

Der Name der Zieldatenbank, in der replizierte Daten platziert werden sollen. @destination_db ist "sysname" mit der Standardeinstellung "NULL. Wenn NULL, @destination_db auf den Namen der Publikationsdatenbank festgelegt ist. Für Oracle-Herausgeber muss @destination_db angegeben werden. Geben Sie für einen Nicht-SQL Server-Abonnent einen Wert (Standardziel) für @destination_db an.

[ @sync_type = ] N'sync_type'

Der Abonnementsynchronisierungstyp. @sync_type ist nvarchar(255), und kann einer der folgenden Werte sein:

Wert Beschreibung des Dataflows
none1 Der Abonnent besitzt bereits das Schema und die Ausgangsdaten für veröffentlichte Tabellen.
automatic (Standard) Das Schema und die Ausgangsdaten für veröffentlichte Tabellen werden zuerst an den Abonnenten übertragen.
replication support only2 Stellt auf dem Abonnenten das automatische Generieren von benutzerdefinierten gespeicherten Prozeduren für Artikel und Trigger bereit, die ggf. das Aktualisieren von Abonnements unterstützen. Setzt voraus, dass der Abonnent bereits über das Schema und die Anfangsdaten für veröffentlichte Tabellen verfügt. Stellen Sie beim Konfigurieren einer Peer-zu-Peer-Transaktionsreplikationstopologie sicher, dass die Daten in allen Knoten der Topologie identisch sind. Weitere Informationen finden Sie unter Peer-to-Peer - Transaktionsreplikation.
initialize with backup2 Das Schema und die Ausgangsdaten für veröffentlichte Tabellen werden von einer Sicherung der Veröffentlichungsdatenbank abgerufen. Es wird davon ausgegangen, dass der Abonnent über Zugriff auf eine Sicherung der Veröffentlichungsdatenbank verfügt. Der Speicherort des Sicherungs- und Medientyps für die Sicherung wird durch @backupdevicename und @backupdevicetype angegeben. Wenn Sie diese Option verwenden, muss eine Peer-zu-Peer-Transaktionsreplikationstopologie während der Konfiguration nicht deaktiviert werden.
initialize from lsn Wird verwendet, wenn Sie einer Peer-to-Peer-Replikationstopologie einen Knoten hinzufügen. Wird mit @subscriptionlsn verwendet, um sicherzustellen, dass alle relevanten Transaktionen auf den neuen Knoten repliziert werden. Setzt voraus, dass der Abonnent bereits über das Schema und die Anfangsdaten für veröffentlichte Tabellen verfügt. Weitere Informationen finden Sie unter Peer-to-Peer - Transaktionsreplikation.

1 Diese Option ist veraltet. Verwenden Sie stattdessen replication support only.

2 Für Abonnements für Nicht-SQL Server-Publikationen nicht unterstützt.

Hinweis

Systemtabellen und Daten werden immer übertragen.

[ @status = ] N'status'

Der Abonnementstatus. @status ist "sysname" mit der Standardeinstellung "NULL. Wenn dieser Parameter nicht explizit festgelegt ist, legt die Replikation ihn automatisch auf einen dieser Werte fest.

Wert Beschreibung
active Das Abonnement wird initialisiert und ist bereit, Änderungen anzunehmen. Diese Option wird festgelegt, wenn der Wert von @sync_type keine ist, nur mit Sicherung oder Replikationsunterstützung initialisiert wird.
subscribed Das Abonnement muss initialisiert werden. Diese Option wird festgelegt, wenn der Wert von @sync_type automatisch ist.

[ @subscription_type = ] N'subscription_type'

Der Abonnementtyp. @subscription_type ist nvarchar(4), mit einem Standardwert von push. Kann push oder pull sein. Die Verteilungs-Agent von Pushabonnements befinden sich im Distributor, und die Verteilungs-Agent der Pullabonnements befinden sich im Abonnenten. @subscription_type kann es seinpull, ein benanntes Pullabonnement zu erstellen, das dem Publisher bekannt ist. Weitere Informationen finden Sie unter Abonnieren von Veröffentlichungen.

Hinweis

Anonyme Abonnements müssen diese gespeicherte Prozedur nicht verwenden.

[ @update_mode = ] N'update_mode'

Die Art von Update: @update_mode ist nvarchar(30) und kann einer dieser Werte sein.

Wert Beschreibung
read only (Standardwert) Das Abonnement ist schreibgeschützt. Die Änderungen am Abonnenten werden nicht an den Herausgeber 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 Herausgeber und der Abonnent nicht verbunden sind, kann der Aktualisierungsmodus geändert werden, sodass Datenänderungen, die am Abonnenten vorgenommen wurden, in einer Warteschlange gespeichert werden, bis der Abonnent und Publisher erneut verbunden sind. Diese Option wird für Oracle-Verleger nicht unterstützt.
queued failover 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. Diese Option wird für Oracle-Verleger nicht unterstützt.

Die Werte sync tran und queued tran sind nicht zulässig, wenn die Publikation abonniert wird, DTS zulässt.

[ @loopback_detection = ] N'loopback_detection'

Gibt an, ob der Verteilungs-Agent Transaktionen, die vom Abonnenten stammen, zurück an den Abonnenten sendet. @loopback_detection ist nvarchar(5) und kann einer dieser Werte sein.

Wert Beschreibung
true Verteilungs-Agent sendet keine Transaktionen, die vom Abonnenten stammen, an den Abonnenten zurück. Wird bei der bidirektionalen Transaktionsreplikation verwendet. Weitere Informationen finden Sie unter Bidirectional Transactional Replication.
false Der Verteilungs-Agent sendet Transaktionen des Abonnenten an den Abonnenten zurück.
NULL (Standard) Wird für einen SQL Server-Abonnent automatisch auf "true" und "false" für einen Nicht-SQL Server-Abonnent festgelegt.

[ @frequency_type = ] frequency_type

Die Häufigkeit, mit der der Verteilungsvorgang geplant werden soll. @frequency_type ist int und kann einer dieser Werte sein.

Wert Beschreibung
1 Einmal
2 On-Demand-Streaming
4 Täglich
8 Wöchentlich
16 Monatlich
32 Monatlich, relativ
64 (Standard) Autostart
128 Wiederkehrend

[ @frequency_interval = ] frequency_interval

Der Wert, der auf die von @frequency_type festgelegte Häufigkeit angewendet werden soll. @frequency_interval ist int, mit einem Standardwert von NULL.

[ @frequency_relative_interval = ] frequency_relative_interval

Das Datum des Verteilungs-Agent. Dieser Parameter wird verwendet, wenn @frequency_type auf 32 (monatlich relativ) festgelegt ist. @frequency_relative_interval ist int und kann einer dieser Werte sein.

Wert Beschreibung
1 Vorname
2 Second
4 Third
8 Viertes
16 Letzte
NULL (Standard)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Der von @frequency_type verwendete Serienfaktor. @frequency_recurrence_factor ist int mit einem Standardwert von NULL.

[ @frequency_subday = ] frequency_subday

Wie oft in Minuten während des definierten Zeitraums neu geplant werden soll. @frequency_subday ist int und kann einer dieser Werte sein.

Wert Beschreibung
1 Einmal
2 Second
4 Minute
8 Hour
NULL

[ @frequency_subday_interval = ] frequency_subday_interval

Das Intervall für @frequency_subday. @frequency_subday_interval ist int, mit einem Standardwert von NULL.

[ @active_start_time_of_day = ] active_start_time_of_day

Die Tageszeit, zu der die Verteilungs-Agent zum ersten Mal geplant ist, formatiert als HHmmss. @active_start_time_of_day ist int mit einem Standardwert von NULL.

[ @active_end_time_of_day = ] active_end_time_of_day

Die Tageszeit, zu der die Verteilungs-Agent nicht mehr geplant wird, formatiert als HHmmss. @active_end_time_of_day ist int mit einem Standardwert von NULL.

[ @active_start_date = ] active_start_date

Das Datum, an dem die Verteilungs-Agent zum ersten Mal geplant ist, formatiert als yyyyMMdd. @active_start_date ist int, mit einem Standardwert von NULL.

[ @active_end_date = ] active_end_date

Das Datum, an dem die Verteilungs-Agent nicht mehr geplant wird, formatiert als yyyyMMdd. @active_end_date ist int, mit einem Standardwert von NULL.

[ @optional_command_line = ] N'optional_command_line'

Die optionale Eingabeaufforderung, die ausgeführt werden soll. @optional_command_line ist nvarchar(4000), mit einem Standardwert von NULL.

[ @reserved = ] N'reserved'

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Gibt an, ob das Abonnement über den Windows-Synchronisierungs-Manager synchronisiert werden kann. @enabled_for_syncmgr ist nvarchar(5), mit einem Standardwert von NULL, der identisch falsemit . Wenn falsedas Abonnement nicht beim Windows-Synchronisierungs-Manager registriert ist. Wenn truedas Abonnement bei Windows-Synchronisierungs-Manager registriert ist und ohne SQL Server Management Studio synchronisiert werden kann. Diese Option wird für Oracle-Verleger nicht unterstützt.

[ @offloadagent = ] Offloadagent

Gibt an, dass eine Remoteaktivierung der Momentaufnahme möglich ist. @offloadagent ist bit, mit einem Standardwert von 0.

Hinweis

Dieser Parameter wurde als veraltet markiert und wird nur noch bereitgestellt, um Abwärtskompatibilität von Skripts sicherzustellen.

[ @offloadserver = ] N'offloadserver'

Gibt den Netzwerknamen des Servers an, der für die Remoteaktivierung verwendet werden soll. @offloadserver ist "sysname" mit einem Standardwert von NULL.

[ @dts_package_name = ] N'dts_package_name'

Gibt den Namen des DTS-Pakets (Data Transformation Services) an. @dts_package_name ist "sysname" mit dem Standardwert "NULL. Zum Angeben eines Pakets mit dem Namen DTSPub_Package wird beispielsweise der @dts_package_name = N'DTSPub_Package'-Parameter verwendet. Dieser Parameter ist für Pushabonnements verfügbar. Um DTS-Paketinformationen zu einem Pullabonnement hinzuzufügen, verwenden Sie sp_addpullsubscription_agent.

[ @dts_package_password = ] N'dts_package_password'

Gibt das Kennwort für das Paket an, falls vorhanden. @dts_package_password ist "sysname" mit der Standardeinstellung "NULL.

Hinweis

Sie müssen ein Kennwort angeben, wenn @dts_package_name angegeben ist.

[ @dts_package_location = ] N'dts_package_location'

Gibt den Paketspeicherort an. @dts_package_location ist nvarchar(12), mit einem Standardwert von NULL, der identisch distributormit . Der Speicherort des Pakets kann sein distributor oder subscriber.

[ @distribution_job_name = ] N'distribution_job_name'

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @publisher = ] N'publisher'

Gibt einen Nicht-SQL Server-Herausgeber an. @publisher ist "sysname" mit der Standardeinstellung "NULL.

Hinweis

@publisher sollte für einen SQL Server-Herausgeber nicht angegeben werden.

[ @backupdevicetype = ] N'backupdevicetype'

Gibt den Sicherungsmedientyp an, der beim Initialisieren eines Abonnenten von einer Sicherung verwendet wird. @backupdevicetype ist nvarchar(20) und kann einer der folgenden Werte sein:

Wert Beschreibung
logical (Standardwert) Das Sicherungsgerät ist ein logisches Gerät.
disk Das Sicherungsgerät ist laufwerk
tape Das Sicherungsmedium ist ein Bandlaufwerk.

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

[ @backupdevicename = ] N'backupdevicename'

Gibt den Namen des Sicherungsmediums an, das beim Initialisieren eines Abonnenten von einer Sicherung verwendet wird. @backupdevicename ist "nvarchar(1000)" mit einem Standardwert von NULL.

[ @mediapassword = ] N'mediapassword'

Gibt ein Kennwort für den Mediensatz an, falls beim Formatieren des Mediums ein Kennwort festgelegt wurde. @mediapassword ist "sysname" mit einem Standardwert von NULL.

Hinweis

Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

[ @password = ] N'password'

Gibt ein Kennwort für die Sicherung an, falls beim Erstellen der Sicherung ein Kennwort festgelegt wurde. @password ist "sysname" mit der Standardeinstellung "NULL.

[ @fileidhint = ] fileidhint

Identifiziert einen Ordnungswert des wiederherzustellenden Sicherungssatzes. @fileidhint ist int mit einem Standardwert von NULL.

[ @unload = ] Entladen

Gibt an, ob ein Datensicherungsmedium nach Abschluss der Initialisierung von der Sicherung entladen werden soll. @unload ist bit, mit einem Standardwert von 1, der angibt, dass das Band entladen werden soll. @unload wird nur verwendet, wenn @backupdevicetype isttape.

[ @subscriptionlsn = ] subscriptionlsn

Gibt die Protokollfolgenummer (LSN, Log Sequence Number) an, bei der ein Abonnement beginnen soll, Änderungen an einen Knoten in einer Peer-zu-Peer-Transaktionsreplikationstopologie zu übermitteln. @subscriptionlsn ist "binary(10)" mit einem Standardwert von NULL. Wird mit einem @sync_type Wert verwendet, um initialize from lsn sicherzustellen, dass alle relevanten Transaktionen in einen neuen Knoten repliziert werden. Weitere Informationen finden Sie unter Peer-to-Peer - Transaktionsreplikation.

[ @subscriptionstreams = ] subscriptionstreams

Die Anzahl der pro Verteilungs-Agent zulässigen Verbindungen, um Batches von Änderungen parallel zu einem Abonnenten anzuwenden, während Standard viele der transaktionsbezogenen Merkmale bei Verwendung eines einzelnen Threads enthalten. @subscriptionstreams ist winzig, mit einem Standardwert von NULL. Ein Wertebereich von 1 bis zu 64 wird unterstützt. Dieser Parameter wird für Nicht-SQL Server-Abonnenten, Oracle-Herausgeber oder Peer-to-Peer-Abonnements nicht unterstützt. Immer wenn @subscriptionstreams verwendet wird, werden zusätzliche Zeilen in der msreplication_subscriptions Tabelle (eine Zeile pro Datenstrom) mit einem agent_id Satz hinzugefügt.NULL

Hinweis

Abonnementdatenströme funktionieren nicht für Artikel, die für die Bereitstellung von Transact-SQL konfiguriert sind. Um Abonnementdatenströme zu verwenden, konfigurieren Sie Artikel, um stattdessen Gespeicherte Prozeduraufrufe zu übermitteln.

[ @subscriber_type = ] subscriber_type

Der Typ des Abonnenten. @subscriber_type ist winzig und kann einer dieser Werte sein.

Wert Beschreibung
0 (Standardwert) SQL Server-Abonnent
1 ODBC-Datenquellenserver
2 Microsoft Jet-Datenbank
3 OLE DB-Anbieter

[ @memory_optimized = ] memory_optimized

Gibt an, dass das Abonnement speicheroptimierte Tabellen unterstützt. @memory_optimized ist bit, mit einem Standardwert von 0 (false). 1 (true) bedeutet, dass das Abonnement speicheroptimierte Tabellen unterstützt.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_addsubscriptionwird in Momentaufnahme Replikation und Transaktionsreplikation verwendet.

Wenn sp_addsubscription ein Mitglied der sysadmin-Serverrolle ausgeführt wird, um ein Pushabonnement zu erstellen, wird der Verteilungs-Agent Auftrag implizit erstellt und unter dem SQL Server-Agent Dienstkonto ausgeführt. Es wird empfohlen, sp_addpushsubscription_agent auszuführen und die Anmeldeinformationen eines anderen, agentspezifischen Windows-Kontos für @job_login und @job_passwordanzugeben. Weitere Informationen finden Sie unter Replication Agent Security Model.

sp_addsubscription verhindert den Zugriff von ODBC- und OLE DB-Abonnenten auf Publikationen, die:

  • Wurden mit dem systemeigenen @sync_method im Aufruf von sp_addpublication erstellt.

  • Enthalten Artikel, die der Publikation mit der sp_addarticle gespeicherten Prozedur hinzugefügt wurden, die einen @pre_creation_cmd Parameterwert von 3 (Abschneiden) aufweist.

  • Versuchen Sie, @update_mode auf sync tran.

  • Veröffentlichungen, bei denen ein Artikel für die Verwendung parametrisierter Anweisungen konfiguriert ist.

Wenn eine Publikation die Option @allow_queued_tran auf "true" festgelegt ist (wodurch das Anwarteschlangen von Änderungen am Abonnenten aktiviert wird, bis sie auf publisher angewendet werden können), wird die Zeitstempelspalte in einem Artikel als Zeitstempel ausgeskriptet, und Änderungen an dieser Spalte werden an den Abonnenten gesendet. Der Abonnent generiert und aktualisiert den Wert der timestamp-Spalte. Bei einem ODBC- oder OLE DB-Abonnent schlägt ein Fehler fehl, wenn versucht wird, sp_addsubscription eine Publikation zu abonnieren, die @allow_queued_tran auf "true" festgelegt ist, und Artikel mit darin enthaltenen Zeitstempelspalten.

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

Beim Auswählen der sync_type Optionen replication support only, initialize with backupoder initialize from lsnmuss der Protokolllese-Agent nach der Ausführung sp_addsubscriptionausgeführt werden, damit die Setupskripts in die Verteilungsdatenbank geschrieben werden. Der Protokolllese-Agent muss unter einem Konto ausgeführt werden, das Mitglied der festen Serverrolle sysadmin ist. Wenn die Option @sync_type festgelegt Automaticist, sind keine speziellen Aktionen für den Protokollleser-Agent erforderlich.

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder db_owner feste Datenbankrolle können ausgeführt werden sp_addsubscription. Für Pullabonnements können Benutzer mit Anmeldungen in der Publikationszugriffsliste ausgeführt werden sp_addsubscription.

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

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

--Add a push subscription to a transactional publication.
USE [AdventureWorks2022]
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