sp_addmergesubscription (Transact-SQL)
Erstellt ein Mergepushabonnement oder ein Mergepullabonnement. Diese gespeicherte Prozedur wird auf dem Verleger für die Veröffentlichungsdatenbank ausgeführt.
Syntax
sp_addmergesubscription [ @publication= ] 'publication'
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @subscriber_db= ] 'subscriber_db' ]
[ , [ @subscription_type= ] 'subscription_type' ]
[ , [ @subscriber_type= ] 'subscriber_type' ]
[ , [ @subscription_priority= ] subscription_priority ]
[ , [ @sync_type= ] '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= ] 'optional_command_line' ]
[ , [ @description= ] 'description' ]
[ , [ @enabled_for_syncmgr= ] 'enabled_for_syncmgr' ]
[ , [ @offloadagent= ] remote_agent_activation]
[ , [ @offloadserver= ] 'remote_agent_server_name' ]
[ , [ @use_interactive_resolver= ] 'use_interactive_resolver' ]
[ , [ @merge_job_name= ] 'merge_job_name' ]
[ , [ @hostname = ] 'hostname'
Argumente
[ @publication=] 'publication'
Der Name der Veröffentlichung. publication ist ein Wert vom Datentyp sysname und weist keinen Standardwert auf. Die Veröffentlichung muss bereits vorhanden sein.[ @subscriber =] 'subscriber'
Der Name des Abonnenten. subscriber ist vom Datentyp sysname und hat den Standardwert NULL.[ @subscriber_db=] 'subscriber_db'
Der Name der Abonnementdatenbank. subscriber_db ist vom Datentyp sysname und hat den Standardwert NULL.[ @subscription_type=] 'subscription_type'
Der Abonnementtyp. subscription_type ist vom Datentyp nvarchar(15), der Standardwert ist PUSH. Bei push wird ein Pushabonnement hinzugefügt, und der Merge-Agent wird dem Verteiler hinzugefügt. Bei pull wird ein Pullabonnement hinzugefügt, ohne dass ein Merge-Agent dem Verteiler hinzugefügt wird.Hinweis Für anonyme Abonnements ist diese gespeicherte Prozedur nicht erforderlich.
[ @subscriber_type=] 'subscriber_type'
Der Abonnententyp. subscriber_type ist vom Datentyp nvarchar(15). Die folgenden Werte sind möglich:Wert
Beschreibung
local (Standard)
Der Abonnent ist nur dem Verleger bekannt.
global
Der Abonnent ist allen Servern bekannt.
In SQL Server 2005 und höheren Versionen werden lokale Abonnements als Clientabonnements und globale Abonnements als Serverabonnements bezeichnet. Weitere Informationen finden Sie im Abschnitt zu Abonnementtypen unter Konflikterkennung und -lösung bei der Mergereplikation.
[ @subscription_priority=] subscription_priority
Eine Zahl zum Anzeigen der Abonnementpriorität. subscription_priority ist vom Datentyp real und hat den Standardwert NULL. Für lokale und anonyme Abonnements ist die Priorität 0,0. Für globale Abonnements muss die Priorität niedriger als 100,0 sein.[ @sync_type=] 'sync_type'
Der Synchronisierungstyp des Abonnements. sync_type ist vom Datentyp nvarchar(15), der Standardwert ist automatic. Kann automatic oder none sein. Bei automatic werden das Schema und die Ausgangsdaten für veröffentlichte Tabellen zuerst an den Abonnenten übertragen. Bei none wird vorausgesetzt, dass der Abonnent bereits über das Schema und die Ausgangsdaten für veröffentlichte Tabellen verfügt. Systemtabellen und Daten werden immer übertragen.Hinweis Von der Angabe des Werts none wird abgeraten. Weitere Informationen finden Sie unter Initialisieren eines Mergeabonnements ohne Momentaufnahme.
[ @frequency_type=] frequency_type
Ein Wert, der anzeigt, wann der Merge-Agent ausgeführt wird. frequency_type ist vom Datentyp int. Die folgenden Werte sind möglich:Wert
Beschreibung
1
Einmal
4
Täglich
8
Wöchentlich
10
Monatlich
20
Monatlich, relativ zum Häufigkeitsintervall
40
Beim Starten des SQL Server-Agents
NULL (Standard)
[ @frequency_interval=] frequency_interval
Der Tag oder die Tage, an dem bzw. an denen der Merge-Agent ausgeführt wird. frequency_interval ist vom Datentyp int. Die folgenden Werte sind möglich:Wert
Beschreibung
1
Sonntag
2
Montag
3
Dienstag
4
Mittwoch
5
Donnerstag
6
Freitag
7
Samstag
8
Tag
9
Arbeitstage
10
Wochenendtage
NULL (Standard)
[ @frequency_relative_interval=] frequency_relative_interval
Das monatliche Vorkommen des geplanten Mergeauftrags. frequency_relative_interval ist vom Datentyp int. Die folgenden Werte sind möglich:Wert
Beschreibung
1
Erster
2
Zweiter
4
Dritter
8
Vierter
16
Letzter
NULL (Standard)
[ @frequency_recurrence_factor=] frequency_recurrence_factor
Der von frequency_type verwendete Wiederholungsfaktor. frequency_recurrence_factor ist vom Datentyp int und hat den Standardwert NULL.[ @frequency_subday=] frequency_subday
Die Einheit für frequency_subday_interval. frequency_subday ist vom Datentyp int. Die folgenden Werte sind möglich:Wert
Beschreibung
1
Einmal
2
Sekunde
4
Minute
8
Stunde
NULL (Standard)
[ @frequency_subday_interval=] frequency_subday_interval
Die Häufigkeit für frequency_subday zwischen den einzelnen Mergevorgängen. frequency_subday_interval ist vom Datentyp int und hat den Standardwert NULL.[ @active_start_time_of_day=] active_start_time_of_day
Die Tageszeit, zu der der Merge-Agent zum ersten Mal geplant ist. Dabei wird das Format HHMMSS verwendet. active_start_time_of_day ist vom Datentyp int und hat den Standardwert NULL.[ @active_end_time_of_day=] active_end_time_of_day
Die Tageszeit, ab der der Merge-Agent nicht mehr geplant ist. Dabei wird das Format HHMMSS verwendet. active_end_time_of_day ist vom Datentyp int und hat den Standardwert NULL.[ @active_start_date=] active_start_date
Das Datum, an dem der Merge-Agent zum ersten Mal geplant ist. Dabei wird das Format YYYYMMDD verwendet. active_start_date ist vom Datentyp int und hat den Standardwert NULL.[ @active_end_date=] active_end_date
Das Datum, ab dem der Merge-Agent nicht mehr geplant ist. Dabei wird das Format YYYYMMDD verwendet. active_end_date ist vom Datentyp int und hat den Standardwert NULL.[ @optional_command_line=] 'optional_command_line'
Die optional auszuführende Befehlszeile. optional_command_line ist vom Datentyp nvarchar(4000); der Standardwert ist 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=] 'description'
Eine kurze Beschreibung dieses Mergeabonnements. description ist vom Datentyp nvarchar(255), der Standardwert ist NULL. Dieser Wert wird vom Replikationsmonitor in der Friendly Name-Spalte angezeigt und lässt sich zum Sortieren der Abonnements für eine überwachte Veröffentlichung verwenden.[ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
Gibt an, ob das Abonnement mit der Synchronisierungsverwaltung von Microsoft Windows synchronisiert werden kann. enabled_for_syncmgr ist vom Datentyp nvarchar(5) und hat den Standardwert FALSE. Bei false wird das Abonnement nicht bei der Synchronisierungsverwaltung registriert. Bei true wird das Abonnement bei der Synchronisierungsverwaltung registriert und kann synchronisiert werden, ohne Microsoft SQL Server Management Studio zu starten.[ @offloadagent= ] remote_agent_activation
Gibt an, dass für den Agent eine Remoteaktivierung möglich ist. remote_agent_activation ist ein Wert vom Datentyp bit, der Standardwert ist 0.Hinweis Dieser Parameter wurde als veraltet markiert und wird nur noch bereitgestellt, um Abwärtskompatibilität von Skripts sicherzustellen.
[ @offloadserver= ] 'remote_agent_server_name'
Gibt den Netzwerknamen des Servers an, der für die Remoteaktivierung der Momentaufnahme verwendet werden soll. remote_agent_server_name ist vom Datentyp sysname, der Standardwert ist NULL.[ @use_interactive_resolver= ] 'use_interactive_resolver'
Ermöglicht das interaktive Lösen von Konflikten für alle Artikel, die eine interaktive Lösung zulassen. use_interactive_resolver ist vom Datentyp nvarchar(5) und hat den Standardwert FALSE.[ @merge_job_name= ] 'merge_job_name'
Der @merge_job_name-Parameter ist veraltet und kann nicht festgelegt werden. merge_job_name entspricht sysname. Der Standardwert ist NULL.[ @hostname= ] 'hostname'
Setzt den von HOST_NAME zurückgegebenen Wert außer Kraft, wenn diese Funktion in der WHERE-Klausel eines parametrisierten Filters verwendet wird. Hostname ist vom Datentyp sysname und hat den Standardwert 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, müssen Datentypen eventuell mit CONVERT konvertiert werden. Weitere Informationen zu bewährten Methoden für diesen Fall finden Sie im Abschnitt zum Überschreiben des HOST_NAME()-Werts im Thema Parametrisierte Zeilenfilter.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
sp_addmergesubscription wird bei der Mergereplikation verwendet.
Wenn sp_addmergesubscription von einem 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 empfiehlt sich, sp_addmergepushsubscription_agent auszuführen und die Anmeldeinformationen eines anderen, Agent-spezifischen Windows-Kontos für @job_login und @job_password anzugeben Weitere Informationen finden Sie unter Sicherheitsmodell des Replikations-Agents.
Beispiel
-- 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'AdventureWorks2008R2Replica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks2008R2]
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 der festen Datenbankrolle db_owner können sp_addmergesubscription ausführen.
Siehe auch