Freigeben über


sp_addmergepullsubscription_agent (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

Fügt einen neuen Agentauftrag für die geplante Synchronisierung eines Pullabonnements mit einer Mergeveröffentlichung hinzu. Diese gespeicherte Prozedur wird beim Abonnenten in der Abonnementdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

sp_addmergepullsubscription_agent
    [ [ @name = ] N'name' ]
    , [ @publisher = ] N'publisher'
    , [ @publisher_db = ] N'publisher_db'
    , [ @publication = ] N'publication'
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @publisher_encrypted_password = ] publisher_encrypted_password ]
    [ , [ @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' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @encrypted_password = ] encrypted_password ]
    [ , [ @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' ]
    [ , [ @merge_jobid = ] merge_jobid OUTPUT ]
    [ , [ @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' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @dynamic_snapshot_location = ] N'dynamic_snapshot_location' ]
    [ , [ @use_web_sync = ] use_web_sync ]
    [ , [ @internet_url = ] N'internet_url' ]
    [ , [ @internet_login = ] N'internet_login' ]
    [ , [ @internet_password = ] N'internet_password' ]
    [ , [ @internet_security_mode = ] internet_security_mode ]
    [ , [ @internet_timeout = ] internet_timeout ]
    [ , [ @hostname = ] N'hostname' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

Argumente

[ @name = ] N'name'

Der Name des Agents. @name ist "sysname" mit einem Standardwert von NULL.

[ @publisher = ] N'publisher'

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

[ @publisher_db = ] N'publisher_db'

Der Name der Verlegerdatenbank. @publisher_db ist "sysname" ohne Standard.

[ @publication = ] N'Publikation'

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

[ @publisher_security_mode = ] publisher_security_mode

Der Beim Synchronisieren mit einem Publisher zu verwendende Sicherheitsmodus. @publisher_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.

Wichtig

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

[ @publisher_login = ] N'publisher_login'

Die Anmeldung, die beim Herstellen einer Verbindung mit einem Publisher bei der Synchronisierung verwendet werden soll. @publisher_login ist "sysname" mit einem Standardwert von NULL.

[ @publisher_password = ] N'publisher_password'

Das Kennwort, das beim Herstellen einer Verbindung mit dem Publisher verwendet wird. @publisher_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.

[ @publisher_encrypted_password = ] publisher_encrypted_password

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

[ @subscriber = ] N'subscriber'

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

[ @subscriber_db = ] N'subscriber_db'

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

[ @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 1. Wenn 0, gibt die SQL Server-Authentifizierung an. Wenn 1, gibt die Windows-Authentifizierung an.

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_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_login ist erforderlich, wenn subscriber_security_mode auf 0.

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 für die SQL Server-Authentifizierung. @subscriber_password ist "sysname" mit der Standardeinstellung "NULL. @subscriber_password ist erforderlich, wenn @subscriber_security_mode auf 0.

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 von @publisher, d. h. der Publisher ist auch der Distributor.

[ @distributor_security_mode = ] distributor_security_mode

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 "sysname" mit einem Standardwert von NULL. @distributor_password ist erforderlich, wenn @distributor_security_mode auf 0.

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.

[ @encrypted_password = ] encrypted_password

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

[ @frequency_type = ] frequency_type

Ein Wert, der angibt, wann die Merge-Agent ausgeführt wird. @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 Autostart
128 Wiederkehrend
NULL (Standard)

Hinweis

Gibt einen Wert an, der 64 bewirkt, dass der Merge-Agent im fortlaufenden Modus ausgeführt wird. Dies entspricht dem Festlegen des -Continuous Parameters für den Agent. Weitere Informationen finden Sie unter Replication Merge Agent.

[ @frequency_interval = ] frequency_interval

Die Tage, an denen der Merge-Agent ausgeführt wird. @frequency_interval ist int, mit einem Standardwert von NULL, und kann einer dieser Werte sein.

Wert Beschreibung
1 Sonntag
2 Montag
3 Tuesday
4 Mittwoch
5 Donnerstag
6 Freitag
7 Samstag
8 Tag
9 Wochentage
10 Wochenendtage
NULL (Standard)

[ @frequency_relative_interval = ] frequency_relative_interval

Das Datum des Merge-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 First
2 Second
4 Third
8 Viertes
16 Last
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 während des definierten Zeitraums neu geplant wird. @frequency_subday ist int und kann einer dieser Werte sein.

Wert Beschreibung
1 Einmal
2 Second
4 Minute
8 Hour
NULL (Standard)

[ @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 Merge-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 Merge-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 Merge-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 Merge-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'

Eine optionale Eingabeaufforderung, die dem Merge-Agent bereitgestellt wird. @optional_command_line ist nvarchar(255), wobei standardmäßig eine leere Zeichenfolge vorhanden ist.

Kann zur Bereitstellung zusätzlicher Parameter für den Merge-Agent verwendet werden, wie im folgenden Beispiel gezeigt wird, bei dem das Standardtimeout für Abfragen auf 600 Sekunden erhöht wird:

@optional_command_line = N'-QueryTimeOut 600'

[ @merge_jobid = ] merge_jobid OUTPUT

Der Ausgabeparameter für die Auftrags-ID. @merge_jobid ist ein OUTPUT-Parameter vom Typ Binary(16) mit einem Standardwert von NULL.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Gibt an, ob das Abonnement über die Synchronisierungsverwaltung von  Windows 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 an, an dem die Momentaufnahmedateien aufzunehmen sind. @alt_snapshot_folder ist nvarchar(255), mit einem Standardwert von NULL. Wenn NULLdie Momentaufnahmendateien vom Standardspeicherort, der von Publisher angegeben wird, aufgenommen werden.

[ @working_directory = ] N'working_directory'

Der Name des Arbeitsverzeichnisses, das zum vorübergehenden Speichern von Daten- und Schemadateien für die Publikation verwendet wird, wenn FTP zum Übertragen von Snapshotdateien verwendet wird. @working_directory ist nvarchar(255), mit einem Standardwert von NULL.

[ @use_ftp = ] N'use_ftp'

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

[ @reserved = ] N'reserved'

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

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Verwendet einen interaktiven Konfliktlöser, um Konflikte für alle Artikel zu lösen, die eine interaktive Auflösung ermöglichen. @use_interactive_resolver ist nvarchar(5), mit einem Standardwert von false.

[ @offloadagent = ] N'offloadagent'

Hinweis

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten. Festlegen remote_agent_activation auf einen anderen Wert als false einen Fehler.

[ @offloadserver = ] N'offloadserver'

Hinweis

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten. Wenn Sie remote_agent_server_name auf einen wert ungleich NULL festlegen, wird ein Fehler generiert.

[ @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 mithilfe eines vorhandenen Auftrags statt mit einem neu erstellten Auftrag (Standard) 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.

[ @dynamic_snapshot_location = ] N'dynamic_snapshot_location'

Entspricht dem Pfad zum Ordner, aus dem die Momentaufnahmedateien gelesen werden, wenn eine gefilterte Datenmomentaufnahme zu verwenden ist. @dynamic_snapshot_location ist nvarchar(260), wobei die Standardeinstellung istNULL. Weitere Informationen finden Sie unter Parameterisierte Filter – Parametrisierte Zeilenfilter.

[ @use_web_sync = ] use_web_sync

Gibt an, dass die Websynchronisierung aktiviert wird. @use_web_sync ist bit, mit einem Standardwert von 0. 1 Gibt an, dass das Pullabonnement mithilfe von HTTP über das Internet synchronisiert werden kann.

[ @internet_url = ] N'internet_url'

Der Speicherort des Replikationslisteners (REPLISAPI.DLL) für die Websynchronisierung. @internet_url ist nvarchar(260), mit einem Standardwert von NULL. @internet_url ist eine vollqualifizierte URL im Formathttp://server.domain.com/directory/replisapi.dll. Wenn der Server so konfiguriert ist, dass er einen anderen Port als Port 80 überwacht, muss auch die Portnummer im Format http://server.domain.com:<portnumber>/directory/replisapi.dll angegeben werden, wobei <portnumber> den Port darstellt.

[ @internet_login = ] N'internet_login'

Die Anmeldung, die vom Merge-Agent beim Herstellen einer Verbindung mit dem Webserver verwendet wird, der die Websynchronisierung mithilfe der HTTP-Standardauthentifizierung hosten soll. @internet_login ist "sysname" mit der Standardeinstellung "NULL.

[ @internet_password = ] N'internet_password'

Das Kennwort, das vom Merge-Agent beim Herstellen einer Verbindung mit dem Webserver verwendet wird, der die Websynchronisierung mithilfe der HTTP-Standardauthentifizierung hosten soll. @internet_password ist nvarchar(524), wobei die Standardeinstellung istNULL.

Wichtig

Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort.

[ @internet_security_mode = ] internet_security_mode

Die Authentifizierungsmethode, die vom Merge-Agent beim Herstellen einer Verbindung mit dem Webserver während der Websynchronisierung mit HTTPS verwendet wird. @internet_security_mode ist int und kann einer dieser Werte sein.

Wert Beschreibung
0 Die Standardauthentifizierung wird verwendet.
1 (Standard) Die integrierte Windows-Authentifizierung wird verwendet.

Hinweis

Wir empfehlen, bei der Websynchronisierung die Standardauthentifizierung zu verwenden. Um die Websynchronisierung zu verwenden, müssen Sie eine TLS-Verbindung mit dem Webserver herstellen. Weitere Informationen finden Sie unter Configure Web Synchronization.

[ @internet_timeout = ] internet_timeout

Die Zeit in Sekunden, nach der eine Websynchronisierungsanforderung abläuft. @internet_timeout ist "int" mit einer Standardeinstellung von 300 Sekunden.

[ @hostname = ] N'hostname'

Überschreibt den Wert, HOST_NAME() wenn diese Funktion in der WHERE Klausel eines parametrisierten Filters verwendet wird. @hostname ist "sysname" mit der Standardeinstellung "NULL.

[ @job_login = ] N'job_login'

Die Anmeldung für das Windows-Konto, unter dem der Agent ausgeführt wird. @job_login ist nvarchar(257), mit einem Standardwert von NULL. Für Agentverbindungen mit dem Abonnenten sowie für Verbindungen mit dem Verteiler und Verleger über die integrierte Windows-Authentifizierung wird stets dieses Windows-Konto verwendet.

[ @job_password = ] N'job_password'

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

Achtung

Speichern Sie keine Authentifizierungsinformationen in Skriptdateien. Für die optimale Sicherheit sollten Anmeldenamen und Kennwörter zur Laufzeit bereitgestellt werden.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_addmergepullsubscription_agent wird in der Zusammenführungsreplikation verwendet und verwendet Funktionen wie sp_addpullsubscription_agent.

Ein Beispiel für die korrekte Angabe von Sicherheitseinstellungen bei der Ausführung sp_addmergepullsubscription_agentfinden Sie unter Erstellen eines Pullabonnements.

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;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password),
  @hostname = @hostname;
GO

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder db_owner feste Datenbankrolle können ausgeführt werden sp_addmergepullsubscription_agent.