sp_addmergepushsubscription_agent (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Fügt einer Mergeveröffentlichung einen neuen Agentauftrag hinzu, mit dem die Synchronisierung eines Pushabonnements geplant wird. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Wichtig

Beim Konfigurieren eines Verlegers mit einem Remoteverteiler werden die Werte, die für alle Parameter, einschließlich job_login und job_password, bereitgestellt werden, als Nur-Text an den Verteiler 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

Hinweis

Microsoft Entra-ID wurde zuvor als Azure Active Directory (Azure AD) bezeichnet.

Syntax

sp_addmergepushsubscription_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' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_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 ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ ; ]

Argumente

[ @publication = ] N'Publikation'

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

[ @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 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 nach Möglichkeit 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_login ist erforderlich, wenn @subscriber_security_mode auf 0.

[ @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. Wenn ein Abonnentenkennwort verwendet wird, wird es automatisch verschlüsselt.

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.

[ @publisher_security_mode = ] publisher_security_mode

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

[ @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. Dieses Windows-Konto wird immer für Agentverbindungen mit dem Verteiler und für Verbindungen mit dem Abonnenten und Verleger verwendet, wenn die integrierte Windows-Authentifizierung verwendet wird.

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

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

[ @frequency_type = ] frequency_type

Ein Wert, der angibt, wann die Merge-Agent ausgeführt wird. @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 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 die Merge-Agent ausgeführt wird. @frequency_interval ist int und kann einer der folgenden Werte sein:

Wert Beschreibung
1 Sonntag
2 Montag
3 Dienstag
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 einen der folgenden Werte aufweisen.

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

[ @frequency_subday = ] frequency_subday

Wie oft während des definierten Zeitraums neu geplant wird. @frequency_subday ist int und kann einer der folgenden 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 0.

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

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

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

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

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_addmergepushsubscription_agent wird in der Zusammenführungsreplikation verwendet und verwendet Funktionen wie sp_addpushsubscription_agent.

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;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks2022];
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @hostname = @hostname;

--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_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_addmergepushsubscription_agent.