sp_addmergesubscription (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Erstellt ein Mergepushabonnement oder ein Mergepullabonnement. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
Syntax
sp_addmergesubscription
[ @publication = ] N'publication'
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @subscriber_db = ] N'subscriber_db' ]
[ , [ @subscription_type = ] N'subscription_type' ]
[ , [ @subscriber_type = ] N'subscriber_type' ]
[ , [ @subscription_priority = ] subscription_priority ]
[ , [ @sync_type = ] N'sync_type' ]
[ , [ @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' ]
[ , [ @description = ] N'description' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @offloadagent = ] offloadagent ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
[ , [ @merge_job_name = ] N'merge_job_name' ]
[ , [ @hostname = ] N'hostname' ]
[ ; ]
Argumente
[ @publication = ] N'Publikation'
Der Name der Veröffentlichung. @publication ist "sysname" ohne Standard. Die Veröffentlichung muss bereits vorhanden sein.
[ @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
.
[ @subscription_type = ] N'subscription_type'
Der Abonnementtyp. @subscription_type ist "nvarchar(15)", wobei der Standardwert "push
.
- Wenn
push
ein Pushabonnement hinzugefügt wird und die Merge-Agent beim Distributor hinzugefügt wird. - Wenn
pull
, wird ein Pull-Abonnement hinzugefügt, ohne eine Merge-Agent beim Distributor hinzuzufügen.
Hinweis
Anonyme Abonnements müssen diese gespeicherte Prozedur nicht verwenden.
[ @subscriber_type = ] N'subscriber_type'
Der Typ des Abonnenten. @subscriber_type ist nvarchar(15) und kann einen der folgenden Werte aufweisen.
Wert | Beschreibung |
---|---|
local (Standardwert) |
Der Abonnent ist nur dem Verleger bekannt. |
global |
Der Abonnent ist allen Servern bekannt. |
In SQL Server 2005 (9.x) und höheren Versionen werden lokale Abonnements als Clientabonnements bezeichnet, und globale Abonnements werden als Serverabonnements bezeichnet.
[ @subscription_priority = ] subscription_priority
Eine Zahl, die die Priorität für das Abonnement angibt. @subscription_priority ist real, mit einem Standardwert von NULL
. Für lokale und anonyme Abonnements ist 0.0
die Priorität . Für globale Abonnements muss die Priorität kleiner sein als 100.0
.
[ @sync_type = ] N'sync_type'
Der Abonnementsynchronisierungstyp. @sync_type ist "nvarchar(15)" mit einem Standardwert von automatic
.
- Wenn
automatic
die Schema- und Ausgangsdaten für veröffentlichte Tabellen zuerst an den Abonnenten übertragen werden. - Wenn
none
davon ausgegangen wird, dass der Abonnent bereits das Schema und die anfänglichen Daten für veröffentlichte Tabellen enthält. Systemtabellen und Daten werden immer übertragen.
Hinweis
Es wird empfohlen, keinen Wert von none
.
[ @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 |
4 |
Täglich |
8 |
Wöchentlich |
10 |
Monatlich |
20 |
Monatlich, relativ zum Häufigkeitsintervall |
40 |
Wenn SQL Server-Agent gestartet wird |
NULL (Standard) |
[ @frequency_interval = ] frequency_interval
Die Tage, an denen der Merge-Agent ausgeführt wird. @frequency_interval ist int und kann einer der folgenden 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 geplante Zusammenführen des Häufigkeitsintervalls in jedem Monat. @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
Die Einheit für @frequency_subday_interval. @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
Die Häufigkeit für @frequency_subday zwischen den einzelnen Zusammenführungen auftreten. @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'
Die optionale Eingabeaufforderung, die ausgeführt werden soll. @optional_command_line ist nvarchar(4000), mit einem Standardwert von NULL
. Dieser Parameter wird verwendet, um einen Befehl hinzuzufügen, der die Ausgabe aufzeichnet und in einer Datei speichert, oder um eine Konfigurationsdatei oder ein Konfigurationsattribut anzugeben.
[ @description = ] N'description'
Eine kurze Beschreibung dieses Seriendruckabonnements. @description ist nvarchar(255), mit einem Standardwert von NULL
. Dieser Wert wird vom Replikationsmonitor in der Friendly Name
Spalte angezeigt, mit dem die Abonnements für eine überwachte Publikation sortiert werden können.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Gibt an, ob das Abonnement über den Microsoft Windows-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.
[ @offloadagent = ] Offloadagent
Gibt an, dass eine Remoteaktivierung der Momentaufnahme möglich ist. @offloadagent ist bit, mit einem Standardwert von 0
.
Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten.
[ @offloadserver = ] N'offloadserver'
Gibt den Netzwerknamen des Servers an, auf dem die Remoteaktivierung der Momentaufnahme erfolgt. @offloadserver ist "sysname" mit einem Standardwert von NULL
.
[ @use_interactive_resolver = ] N'use_interactive_resolver'
Ermöglicht das interaktive Lösen von Konflikten für alle Artikel, die eine interaktive Auflösung zulassen. @use_interactive_resolver ist nvarchar(5), mit einem Standardwert von false
.
[ @merge_job_name = ] N'merge_job_name'
Dieser Parameter ist veraltet und kann nicht festgelegt werden. @merge_job_name ist "sysname" mit einem Standardwert von NULL
.
[ @hostname = ] N'hostname'
Überschreibt den von HOST_NAME zurückgegebenen Wert, wenn diese Funktion in der WHERE-Klausel eines parametrisierten Filters verwendet wird. @hostname ist "sysname" mit der Standardeinstellung "NULL
.
Wichtig
Aus Leistungsgründen wird empfohlen, keine Funktionen auf Spaltennamen in parametrisierten Zeilenfilterklauseln (beispielsweise LEFT([MyColumn]) = SUSER_SNAME()
) anzuwenden. Wenn Sie HOST_NAME in einer Filterklausel verwenden und den HOST_NAME Wert außer Kraft setzen, kann es erforderlich sein, Datentypen mithilfe von CONVERT zu konvertieren. Weitere Informationen zu bewährten Methoden für diesen Fall finden Sie im Abschnitt "Überschreiben des HOST_NAME()-Werts" im Thema "Parametrisierte Filter - Parametrisierte Zeilenfilter".
Rückgabecodewerte
0
(erfolgreich) oder 1
Fehler.
Hinweise
sp_addmergesubscription
wird in der Seriendruckreplikation verwendet.
Wenn sp_addmergesubscription
ein Mitglied der festen Serverrolle "sysadmin" ausgeführt wird, um ein Pushabonnement zu erstellen, wird der Merge-Agent Auftrag implizit erstellt und unter dem SQL Server-Agent Dienstkonto ausgeführt. Es wird empfohlen, sp_addmergepushsubscription_agent auszuführen und die Anmeldeinformationen eines anderen agentspezifischen Windows-Kontos für @job_login und @job_password anzugeben. Weitere Informationen finden Sie unter Replication Agent Security Model.
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_addmergesubscription
.