Freigeben über


sp_addpullsubscription_agent (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

Fügt einer Transaktionsveröffentlichung einen neuen geplanten Agent-Auftrag hinzu, mit dem ein Pullabonnement synchronisiert wird. Diese gespeicherte Prozedur wird beim Abonnenten in der Abonnementdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

sp_addpullsubscription_agent
    [ @publisher = ] N'publisher'
    [ , [ @publisher_db = ] N'publisher_db' ]
    , [ @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' ]
    [ , [ @distributor = ] N'distributor' ]
    [ , [ @distribution_db = ] N'distribution_db' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @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 ]
    [ , [ @distribution_jobid = ] distribution_jobid OUTPUT ]
    [ , [ @encrypted_distributor_password = ] encrypted_distributor_password ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @ftp_address = ] N'ftp_address' ]
    [ , [ @ftp_port = ] ftp_port ]
    [ , [ @ftp_login = ] N'ftp_login' ]
    [ , [ @ftp_password = ] N'ftp_password' ]
    [ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @use_ftp = ] N'use_ftp' ]
    [ , [ @publication_type = ] publication_type ]
    [ , [ @dts_package_name = ] N'dts_package_name' ]
    [ , [ @dts_package_password = ] N'dts_package_password' ]
    [ , [ @dts_package_location = ] N'dts_package_location' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

Argumente

[ @publisher = ] N'publisher'

Der Name des Herausgebers. @publisher ist "sysname" ohne Standard.

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.

[ @publisher_db = ] N'publisher_db'

Der Name der Verlegerdatenbank. @publisher_db ist "sysname" mit der Standardeinstellung "NULL. @publisher_db wird von Oracle Publishern ignoriert.

[ @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 sich die Abonnentendatenbank in einer Verfügbarkeitsgruppe befindet. @subscriber ist "sysname" mit der Standardeinstellung "NULL.

Hinweis

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten.

Bei der Ausführung sp_addpullsubscription_agent für einen Abonnenten, der Teil einer AG ist, legen Sie @subscriber auf den Namen des AG-Listeners fest. Wenn Sie SQL Server 2016 (13.x) und frühere Versionen oder SQL Server 2017 (14.x) vor CU 16 ausführen, wird die gespeicherte Prozedur ausgeführt, ohne einen Fehler zurückzugeben, aber der @subscriber Parameter für die Replikation Verteilungs-Agent verweist nicht auf den Listenernamen der AG. Der Parameter wird mit dem Namen des Abonnentenservers erstellt, auf dem der Befehl ausgeführt wird. Um dieses Problem zu ändern, aktualisieren Sie den Verteilungs-Agent Auftrag @subscriber Parameter manuell mit dem Namenwert DER AG-Listener.

[ @subscriber_db = ] N'subscriber_db'

Der Name der Abonnementdatenbank. @subscriber_db ist "sysname" mit der Standardeinstellung "NULL.

Hinweis

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten.

[ @subscriber_security_mode = ] subscriber_security_mode

Der Sicherheitsmodus, der beim Synchronisieren mit einem Abonnenten verwendet werden soll. @subscriber_security_mode ist int, mit einem Standardwert von NULL.

  • 0 Gibt die SQL Server-Authentifizierung an.
  • 1Gibt Windows-Authentifizierung

Hinweis

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten. Der Verteilungs-Agent stellt eine Verbindung mit dem lokalen Abonnenten immer mithilfe der Windows-Authentifizierung her. Wenn ein anderer Wert als NULL oder 1 für diesen Parameter angegeben ist, wird eine Warnmeldung zurückgegeben.

[ @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.

Hinweis

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten. Wird für diesen Parameter ein Wert angegeben, wird eine Warnmeldung zurückgegeben, der Wert jedoch ignoriert.

[ @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.

Hinweis

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten. Wird für diesen Parameter ein Wert angegeben, wird eine Warnmeldung zurückgegeben, der Wert jedoch ignoriert.

[ @distributor = ] N'distributor'

Der Name des Distributors. @distributor ist "sysname" mit einem Standardwert des durch @publisher angegebenen Werts.

[ @distribution_db = ] N'distribution_db'

Der Name der Verteilungsdatenbank. @distribution_db ist "sysname" mit der Standardeinstellung "NULL.

[ @distributor_security_mode = ] distributor_security_mode

Hinweis

Microsoft Entra ID war zuvor als Azure Active Directory (Azure AD) bekannt.

Der Sicherheitsmodus, der beim Synchronisieren mit einem Verteiler verwendet werden soll. @distributor_security_mode ist int 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 nach Möglichkeit die Windows-Authentifizierung.

[ @distributor_login = ] N'distributor_login'

Der Distributor login to use when connecting to a Distributor when synchronizeizing. @distributor_login ist "sysname" mit der Standardeinstellung "NULL. @distributor_login ist erforderlich, wenn @distributor_security_mode auf 0.

[ @distributor_password = ] N'distributor_password'

Das Händlerkennwort. distributor_password ist erforderlich, wenn distributor_security_mode auf 0. @distributor_password ist "sysname" mit einem Standardwert von NULL.

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.

[ @optional_command_line = ] N'optional_command_line'

Eine optionale Eingabeaufforderung, die der Verteilungs-Agent bereitgestellt wird. Zum Beispiel: -DefinitionFile C:\Distdef.txt oder -CommitBatchSize 10. @optional_command_line ist nvarchar(4000), wobei standardmäßig eine leere Zeichenfolge vorhanden ist.

[ @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 (Standard) On-Demand-Streaming
4 Täglich
8 Wöchentlich
16 Monatlich
32 Monatlich, relativ
64 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 1.

[ @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 (Standardwert) Einmal
2 Second
4 Minute
8 Hour

[ @frequency_subday_interval = ] frequency_subday_interval

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

[ @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 0.

[ @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 0.

[ @distribution_jobid = ] distribution_jobid OUTPUT

Die ID des Verteilungs-Agent für diesen Auftrag. @distribution_jobid ist ein OUTPUT-Parameter vom Typ Binary(16) mit einem Standardwert von NULL.

[ @encrypted_distributor_password = ] encrypted_distributor_password

@encrypted_distributor_password ist bit, mit einem Standardwert von 0.

Hinweis

Das Festlegen @encrypted_distributor_password wird nicht mehr unterstützt. Der Versuch, diesen Bitparameter festzulegen, 1 führt zu einem Fehler.

[ @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.

[ @ftp_address = ] N'ftp_address'

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten.

[ @ftp_port = ] ftp_port

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten.

[ @ftp_login = ] N'ftp_login'

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten.

[ @ftp_password = ] N'ftp_password'

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Gibt den Speicherort des anderen Ordners für die Momentaufnahme an. @alt_snapshot_folder ist nvarchar(255), mit einem Standardwert von NULL.

[ @working_directory = ] N'working_directory'

Der Name des Arbeitsverzeichnisses, das zum Speichern von Daten- und Schemadateien für die Publikation verwendet wird. @working_directory ist nvarchar(255), mit einem Standardwert von NULL. Dieser Name sollte im UNC-Format angegeben werden.

[ @use_ftp = ] N'use_ftp'

Gibt anstelle des normalen Protokolls FTP an, um Momentaufnahmen abzurufen. @use_ftp ist nvarchar(5) mit einem Standardwert von false.

[ @publication_type = ] publication_type

Gibt den Replikationstyp der Publikation an. @publication_type ist winzig, mit einem Standardwert von 0.

  • Wenn 0, ist die Publikation ein Transaktionstyp.
  • Wenn 1es sich bei der Publikation um einen Momentaufnahmetyp handelt.
  • Wenn 2es sich bei der Publikation um einen Seriendrucktyp handelt.

[ @dts_package_name = ] N'dts_package_name'

Gibt den Namen des DTS-Pakets 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.

[ @dts_package_password = ] N'dts_package_password'

Gibt gegebenenfalls das Kennwort des Pakets an. @dts_package_password ist "sysname" mit dem Standardwert "NULL, was bedeutet, dass sich ein Kennwort nicht im Paket befindet.

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 subscriber. Der Speicherort des Pakets kann sein distributor oder subscriber.

[ @reserved = ] N'reserved'

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

[ @offloadagent = ] N'offloadagent'

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten. Wird für diesen Parameter ein Wert angegeben, wird eine Warnmeldung zurückgegeben, der Wert jedoch ignoriert. Festlegen @offloadagent auf einen anderen Wert als false einen Fehler.

[ @offloadserver = ] N'offloadserver'

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten. Wird für diesen Parameter ein Wert angegeben, wird eine Warnmeldung zurückgegeben, der Wert jedoch ignoriert. Festlegen @offloadserver auf einen anderen Wert als false einen Fehler.

[ @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 nicht mit einem neu erstellten Auftrag (Standard), sondern mit einem vorhandenen Auftrag synchronisiert wird. Wenn Sie kein Mitglied der festen Serverrolle "sysadmin" sind, müssen Sie @job_login und @job_password angeben, wenn Sie @job_name angeben.

[ @job_login = ] N'job_login'

Die Anmeldung für das Windows-Konto, unter dem der Agent ausgeführt wird. @job_login ist nvarchar(257), ohne Standard. Dieses Windows-Konto wird immer für Agent-Verbindungen mit dem Abonnenten verwendet.

[ @job_password = ] N'job_password'

Das Kennwort für das Windows-Konto, unter dem der Agent ausgeführt wird. @job_password ist "sysname" ohne Standard.

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.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

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

-- 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'AdventureWorks2022';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2022Replica]
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 db_owner feste Datenbankrolle können ausgeführt werden sp_addpullsubscription_agent.