Freigeben über


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.
  • 1gibt 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 falsedas Abonnement nicht beim Synchronisierungs-Manager registriert ist.
  • Wenn truedas 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.