sp_addmergesubscription (Transact-SQL)
Erstellt ein Mergepushabonnement oder ein Mergepullabonnement. Diese gespeicherte Prozedur wird auf dem Verleger für die Veröffentlichungsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
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 vom Datentyp sysname und hat keinen Standardwert. 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_dbist vom Datentyp sysname und hat den Standardwert NULL.[ @subscription_type=] 'subscription_type'
Der Typ des Abonnements. subscription_typeist 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 Typ des Abonnenten. subscriber_typeist 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.
[ @subscription_priority=] subscription_priority
Eine Zahl, die die Priorität für das Abonnement angibt. subscription_priorityist 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_typeist 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.
[ @frequency_type=] frequency_type
Ein Wert, der angibt, 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
Die Tage, 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
Day
9
Arbeitstage
10
Wochenendtage
NULL (Standard)
[ @frequency_relative_interval=] frequency_relative_interval
Die geplante Ausführung von Mergevorgängen mit dem Häufigkeitsintervall in jedem Monat. 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_factorist 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
Zweimal
4
Minute
8
Stunde
NULL (Standard)
[ @frequency_subday_interval=] frequency_subday_interval
Die Häufigkeit von frequency_subday zwischen jedem Mergevorgang. 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 JJJJMMTT 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 JJJJMMTT 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_lineist vom Datentyp nvarchar(4000) und hat den Standardwert 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. descriptionist vom Datentyp nvarchar(255) und hat den Standardwert 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 über die Synchronisierungsverwaltung von Microsoft Windows synchronisiert werden kann. enabled_for_syncmgr ist vom Datentyp nvarchar(5). Der Standardwert ist 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 eine Remoteaktivierung der Momentaufnahme möglich ist. remote_agent_activation ist 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, auf dem die Remoteaktivierung der Momentaufnahme erfolgt. remote_agent_server_nameist vom Datentyp sysname und hat den Standardwert NULL.[ @use_interactive_resolver= ] '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 vom Datentyp nvarchar(5). Der Standardwert ist FALSE.[ @merge_job_name= ] 'merge_job_name'
Der @merge\_job\_name-Parameter ist veraltet und kann nicht festgelegt werden. merge_job_name ist vom Datentyp sysname. Der Standardwert ist NULL.[ @hostname= ] 'hostname'
Überschreibt den von HOST_NAME zurückgegebenen Wert, 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 überschreiben, 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'AdventureWorksReplica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks2012];
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
Verweis
sp_changemergesubscription (Transact-SQL)
sp_dropmergesubscription (Transact-SQL)
sp_helpmergesubscription (Transact-SQL)
Konzepte
Erstellen eines Pushabonnements