sp_addpushsubscription_agent (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Fügt einen neuen geplanten Agentauftrag hinzu, der zum Synchronisieren eines Pushabonnements mit einer Transaktionsveröffentlichung verwendet wird. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.
Wichtig
Beim Konfigurieren eines Herausgebers mit einem Remoteverteiler werden die für alle Parameter bereitgestellten Werte, einschließlich @job_login und @job_password, als Nur-Text an den Distributor gesendet. Sie sollten die Verbindung zwischen dem Verleger und dem zugehörigen Remoteverteiler verschlüsseln, bevor Sie diese gespeicherte Prozedur ausführen. Weitere Informationen finden Sie unter Konfigurieren der SQL Server-Datenbank-Engine zum Verschlüsseln von Verbindungen.
Transact-SQL-Syntaxkonventionen
Syntax
sp_addpushsubscription_agent
[ @publication = ] N'publication'
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @subscriber_db = ] N'subscriber_db' ]
[ , [ @subscriber_security_mode = ] subscriber_security_mode ]
[ , [ @subscriber_login = ] N'subscriber_login' ]
[ , [ @subscriber_password = ] N'subscriber_password' ]
[ , [ @job_login = ] N'job_login' ]
[ , [ @job_password = ] N'job_password' ]
[ , [ @job_name = ] N'job_name' ]
[ , [ @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 ]
[ , [ @dts_package_name = ] N'dts_package_name' ]
[ , [ @dts_package_password = ] N'dts_package_password' ]
[ , [ @dts_package_location = ] N'dts_package_location' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @distribution_job_name = ] N'distribution_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @subscriber_provider = ] N'subscriber_provider' ]
[ , [ @subscriber_datasrc = ] N'subscriber_datasrc' ]
[ , [ @subscriber_location = ] N'subscriber_location' ]
[ , [ @subscriber_provider_string = ] N'subscriber_provider_string' ]
[ , [ @subscriber_catalog = ] N'subscriber_catalog' ]
[ ; ]
Argumente
[ @publication = ] N'Publikation'
Der Name der Veröffentlichung. @publication ist "sysname" ohne Standard.
[ @subscriber = ] N'subscriber'
Der Name der Subscriber-Instanz oder der Name des AG-Listeners, wenn die Abonnentendatenbank Teil einer Verfügbarkeitsgruppe ist. @subscriber ist "sysname" mit der Standardeinstellung "NULL
.
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.
[ @subscriber_db = ] N'subscriber_db'
Der Name der Abonnementdatenbank. @subscriber_db ist "sysname" mit der Standardeinstellung "NULL
.
Geben Sie für einen Nicht-SQL Server-Abonnent einen Wert von (Standardziel) für subscriber_db an.
[ @subscriber_security_mode = ] subscriber_security_mode
Der Sicherheitsmodus, der beim Synchronisieren mit einem Abonnenten verwendet werden soll. @subscriber_security_mode ist klein, mit einem Standardwert von 1
. Die folgenden Werte definieren den Sicherheitsmodus:
0
Gibt die SQL Server-Authentifizierung an.1
gibt Windows-Authentifizierung an.2
Gibt die Microsoft Entra-Kennwortauthentifizierung ab SQL Server 2022 (16.x) CU 6 an.3
Gibt die integrierte Microsoft Entra-Authentifizierung ab SQL Server 2022 (16.x) CU 6 an.4
Gibt die Microsoft Entra-Tokenauthentifizierung ab SQL Server 2022 (16.x) CU 6 an.
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. Verwenden Sie für alle anderen Abonnements die Windows-Authentifizierung.
[ @subscriber_login = ] N'subscriber_login'
Die Abonnentenanmeldung, die beim Herstellen einer Verbindung mit einem Abonnenten bei der Synchronisierung verwendet werden soll. @subscriber_login ist "sysname" mit der Standardeinstellung "NULL
.
[ @subscriber_password = ] N'subscriber_password'
Das Abonnentenkennwort. subscriber_password ist erforderlich, wenn subscriber_security_mode auf 0
. @subscriber_password ist "sysname" mit der Standardeinstellung "NULL
. Wenn ein Abonnentenkennwort verwendet wird, wird es automatisch verschlüsselt.
Wichtig
Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort. Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, muss die Datei an einem sicheren Ort gespeichert werden, um unberechtigten Zugriff zu vermeiden.
[ @job_login = ] N'job_login'
Die Anmeldung für das Konto, unter dem der Agent ausgeführt wird. Verwenden Sie in Azure SQL verwaltete Instanz ein SQL Server-Konto. @job_login ist nvarchar(257), mit einem Standardwert von NULL
. Dieses Windows-Konto wird immer für Agentverbindungen mit dem Verteiler und für Verbindungen mit dem Abonnenten verwendet, wenn die integrierte Windows-Authentifizierung verwendet wird.
[ @job_password = ] N'job_password'
Das Kennwort für das Konto, unter dem der Agent ausgeführt wird. @job_password ist "sysname" ohne Standard.
Wichtig
Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, muss die Datei an einem sicheren Ort gespeichert werden, um unberechtigten Zugriff zu vermeiden.
[ @job_name = ] N'job_name'
Der Name eines vorhandenen Agentenauftrags. @job_name ist "sysname" mit der Standardeinstellung "NULL
. Dieser Parameter wird nur angegeben, wenn das Abonnement mit einem vorhandenen Auftrag synchronisiert wird, anstelle eines neu erstellten Auftrags (Standardeinstellung). Wenn Sie kein Mitglied der festen Serverrolle "sysadmin" sind, müssen Sie @job_login und @job_password angeben, wenn Sie @job_name angeben.
[ @frequency_type = ] frequency_type
Die Häufigkeit, mit der die Verteilungs-Agent geplant werden soll. @frequency_type ist int und kann einer der folgenden 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 |
Hinweis
Gibt einen Wert an, der 64
bewirkt, dass der Verteilungs-Agent im fortlaufenden Modus ausgeführt wird. Dies entspricht dem Festlegen des -Continuous
Parameters für den Agent. Weitere Informationen finden Sie unter Replication Distribution Agent.
[ @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 1
.
[ @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 einen der folgenden Werte aufweisen.
Wert | Beschreibung |
---|---|
1 (Standardwert) |
First |
2 |
Second |
4 |
Third |
8 |
Viertes |
16 |
Last |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
Der von @frequency_type verwendete Serienfaktor. @frequency_recurrence_factor ist int mit einem Standardwert von 0
.
[ @frequency_subday = ] frequency_subday
Gibt an, wie oft während des definierten Zeitraums neu geplant werden soll. @frequency_subday ist int und kann einer der folgenden Werte sein:
Wert | Beschreibung |
---|---|
1 |
Einmal |
2 |
Second |
4 (Standard) |
Minute |
8 |
Hour |
[ @frequency_subday_interval = ] frequency_subday_interval
Das Intervall für @frequency_subday. @frequency_subday_interval ist int, mit einem Standardwert von 5
.
[ @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 0
.
[ @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 235959
.
[ @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 0
.
[ @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 99991231
.
[ @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 des Paketnamens DTSPub_Package
wird beispielsweise der @dts_package_name = N'DTSPub_Package'
-Parameter verwendet.
[ @dts_package_password = ] N'dts_package_password'
Gibt das zum Ausführen des Pakets erforderliche Kennwort an. @dts_package_password ist "sysname" mit dem Standardwert "NULL
, was bedeutet, dass das Paket kein Kennwort hat.
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 distributor
. Der Speicherort des Pakets kann sein distributor
oder subscriber
.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Gibt an, ob das Abonnement über den Microsoft-Synchronisierungs-Manager synchronisiert werden kann. @enabled_for_syncmgr ist nvarchar(5), mit einem Standardwert von false
.
- Wenn
false
das Abonnement nicht beim Synchronisierungs-Manager registriert ist. - Wenn
true
das Abonnement mit dem Synchronisierungs-Manager registriert ist und ohne sql Server Management Studio synchronisiert werden kann.
[ @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'
Der Name des Herausgebers. @publisher ist "sysname" mit der Standardeinstellung "NULL
.
[ @subscriber_provider = ] N'subscriber_provider'
Der eindeutige programmgesteuerte Bezeichner (PROGID), mit dem der OLE DB-Anbieter für die Nicht-SQL Server-Datenquelle registriert ist. @subscriber_provider ist "sysname" mit der Standardeinstellung "NULL
. @subscriber_provider muss für den ole DB-Anbieter eindeutig sein, der auf dem Distributor installiert ist. @subscriber_provider wird nur für Nicht-SQL Server-Abonnenten unterstützt.
[ @subscriber_datasrc = ] N'subscriber_datasrc'
Der Name der Datenquelle, wie vom OLE DB-Anbieter verstanden.@subscriber_datasrc ist nvarchar(4000), mit einem Standardwert von NULL
. @subscriber_datasrc wird als DBPROP_INIT_DATASOURCE
Eigenschaft übergeben, um den OLE DB-Anbieter zu initialisieren. @subscriber_datasrc wird nur für Nicht-SQL Server-Abonnenten unterstützt.
[ @subscriber_location = ] N'subscriber_location'
Der Speicherort der Datenbank, wie vom OLE DB-Anbieter verstanden. @subscriber_location ist nvarchar(4000), mit einem Standardwert von NULL
. @subscriber_location wird als DBPROP_INIT_LOCATION
Eigenschaft übergeben, um den OLE DB-Anbieter zu initialisieren. @subscriber_location wird nur für Nicht-SQL Server-Abonnenten unterstützt.
[ @subscriber_provider_string = ] N'subscriber_provider_string'
Der anbieterspezifische OLE DB-Verbindungszeichenfolge, der die Datenquelle identifiziert. @subscriber_provider_string ist nvarchar(4000), mit einem Standardwert von NULL
. @subscriber_provider_string wird an IDataInitialize übergeben oder als DBPROP_INIT_PROVIDERSTRING
Eigenschaft festgelegt, um den OLE DB-Anbieter zu initialisieren. @subscriber_provider_string wird nur für Nicht-SQL Server-Abonnenten unterstützt.
[ @subscriber_catalog = ] N'subscriber_catalog'
Der Katalog, der beim Herstellen einer Verbindung mit dem OLE DB-Anbieter verwendet werden soll. @subscriber_catalog ist "sysname" mit dem Standardwert "NULL
. @subscriber_catalog wird als DBPROP_INIT_CATALOG
Eigenschaft übergeben, um den OLE DB-Anbieter zu initialisieren. @subscriber_catalog wird nur für Nicht-SQL Server-Abonnenten unterstützt.
Rückgabecodewerte
0
(erfolgreich) oder 1
Fehler.
Hinweise
sp_addpushsubscription_agent
wird in der Momentaufnahmereplikation und Transaktionsreplikation verwendet.
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
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin oder db_owner feste Datenbankrolle können ausgeführt werden sp_addpushsubscription_agent
.
Zugehöriger Inhalt
- Erstellen eines Pushabonnements
- Erstellen eines Abonnements für einen Nicht-SQL Server-Abonnenten
- Abonnieren von Veröffentlichungen
- Gespeicherte Replikationsprozeduren (Transact-SQL)
- sp_addsubscription (Transact-SQL)
- sp_changesubscription (Transact-SQL)
- sp_dropsubscription (Transact-SQL)
- sp_helpsubscription (Transact-SQL)