sp_addmergesubscription (Transact-SQL)

Erstellt ein Mergepushabonnement oder ein Mergepullabonnement. Diese gespeicherte Prozedur wird auf dem Verleger für die Veröffentlichungsdatenbank ausgeführt.

Themenlink (Symbol)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 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.

    HinweisHinweis

    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.

    HinweisHinweis

    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.

    HinweisHinweis

    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.

    Wichtiger HinweisWichtig

    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.