Freigeben über


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 pushein 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.0die 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 automaticdie Schema- und Ausgangsdaten für veröffentlichte Tabellen zuerst an den Abonnenten übertragen werden.
  • Wenn nonedavon 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 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.

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