Share via


sp_addmergepublication (Transact-SQL)

Erstellt eine neue Mergeveröffentlichung. Diese gespeicherte Prozedur wird auf Verlegerebene für die Datenbank ausgeführt, die veröffentlicht wird.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

sp_addmergepublication [ @publication = ] 'publication' 
    [ , [ @description = ] 'description' 
    [ , [ @retention = ] retention ] 
    [ , [ @sync_mode = ] 'sync_mode' ] 
    [ , [ @allow_push = ] 'allow_push' ] 
    [ , [ @allow_pull = ] 'allow_pull' ] 
    [ , [ @allow_anonymous = ] 'allow_anonymous' ] 
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ] 
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ] 
    [ , [ @dynamic_filters = ] 'dynamic_filters' ] 
    [ , [ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder' ] 
    [ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ] 
    [ , [ @pre_snapshot_script = ] 'pre_snapshot_script' ] 
    [ , [ @post_snapshot_script = ] 'post_snapshot_script' ] 
    [ , [ @compress_snapshot = ] 'compress_snapshot' ] 
    [ , [ @ftp_address = ] 'ftp_address' ] 
    [ , [ @ftp_port = ] ftp_port ] 
    [ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ] 
    [ , [ @ftp_login = ] 'ftp_login' ] 
    [ , [ @ftp_password = ] 'ftp_password' ] 
    [ , [ @conflict_retention = ] conflict_retention ] 
    [ , [ @keep_partition_changes = ] 'keep_partition_changes' ] 
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ] 
    [ , [ @allow_synctoalternate = ] 'allow_synctoalternate' ] 
    [ , [ @validate_subscriber_info = ] 'validate_subscriber_info' ] 
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ] 
    [ , [ @max_concurrent_merge = ] maximum_concurrent_merge ] 
    [ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
    [ , [ @use_partition_groups = ] 'use_partition_groups' ]
    [ , [ @publication_compatibility_level = ] 'backward_comp_level' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot' ] 
    [ , [ @allow_web_synchronization = ] 'allow_web_synchronization' ] 
    [ , [ @web_synchronization_url = ] 'web_synchronization_url' ]
    [ , [ @allow_partition_realignment = ] 'allow_partition_realignment' ]
    [ , [ @retention_period_unit = ] 'retention_period_unit' ]
    [ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
    [ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
    [ , [ @conflict_logging = ] 'conflict_logging' ]

Argumente

  • [ @publication = ] 'publication'
    Der Name der Mergeveröffentlichung, die erstellt werden soll. publication ist vom Datentyp sysname (ohne Standard) und darf nicht das Schlüsselwort ALL sein. Der Name der Veröffentlichung muss innerhalb der Datenbank eindeutig sein.

  • [ @description = ] 'description'
    Ist die Beschreibung der Veröffentlichung. description ist vom Datentyp nvarchar(255). Der Standardwert ist NULL.

  • [ @retention = ] retention
    Die Beibehaltungsdauer, die in den entsprechenden Einheiten angegeben wird. Während dieser Beibehaltungsdauer werden Änderungen für publication gespeichert. retention ist vom Datentyp int und hat einen Standardwert von 14 Einheiten. Die Einheiten für die Beibehaltungsdauer werden mit retention_period_unit definiert. Wird das Abonnement nicht innerhalb der Beibehaltungsdauer synchronisiert und wurden die ausstehenden Änderungen, die vorgenommen werden sollten, durch ein Cleanup am Verteiler entfernt, dann läuft das Abonnement aus und muss neu initialisiert werden. Die maximal zulässige Beibehaltungsdauer ist die Anzahl der Tage zwischen dem 31. Dezember 9999 und dem aktuellen Datum.

    HinweisHinweis

    Für die Beibehaltungsdauer für eine Mergeveröffentlichung gilt eine Verlängerungsfrist von 24 Stunden, damit die verschiedenen Zeitzonen der Abonnenten berücksichtigt werden. Wenn Sie beispielsweise eine Beibehaltungsdauer von einem Tag festgelegt haben, beträgt die tatsächliche Beibehaltungsdauer 48 Stunden.

  • [ @sync_mode = ] 'sync_mode'
    Ist der Modus der Erstsynchronisierung der Abonnenten für die Veröffentlichung. sync_mode ist vom Datentyp nvarchar(10). Die folgenden Werte sind möglich:

    Wert

    Beschreibung

    native (default)

    Erstellt eine Massenkopierprogramm-Ausgabe aller Tabellen im einheitlichen Modus.

    character

    Erstellt eine Massenkopierprogramm-Ausgabe aller Tabellen im Zeichenmodus. Ist erforderlich, um Microsoft SQL Server Compact sowie Nicht-SQL Server-Abonnenten zu unterstützen.

  • [ @allow_push = ] 'allow_push'
    Gibt an, ob für die angegebene Veröffentlichung Pushabonnements erstellt werden können. allow_push ist vom Datentyp nvarchar(5). Mit dem Standardwert TRUE werden Pushabonnements für die Veröffentlichung zugelassen.

  • [ @allow_pull = ] 'allow_pull'
    Gibt an, ob für die angegebene Veröffentlichung Pullabonnements erstellt werden können. allow_pull ist vom Datentyp nvarchar(5). Mit dem Standardwert TRUE werden Pullabonnements für die Veröffentlichung zugelassen. Sie müssen TRUE angeben, damit SQL Server Compact-Abonnenten unterstützt werden.

  • [ @allow_anonymous = ] 'allow_anonymous'
    Gibt an, ob für die angegebene Veröffentlichung anonyme Abonnements erstellt werden können. allow_anonymous ist vom Datentyp nvarchar(5), mit dem Standardwert TRUE, der für die Veröffentlichung anonyme Abonnements zulässt. Damit SQL Server Compact-Abonnenten unterstützt werden, müssen Sie true angeben.

  • [ @enabled_for_internet = ] 'enabled_for_internet'
    Gibt an, ob die Veröffentlichung für das Internet aktiviert ist, und bestimmt, ob die Momentaufnahmedateien per FTP (File Transfer Protocol) an einen Abonnenten übertragen werden können. enabled_for_internet ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Bei einem Wert von true werden die Synchronisierungsdateien für die Veröffentlichung im Verzeichnis C:\Programme\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp gespeichert. Der Benutzer muss das FTP-Verzeichnis erstellen. Bei falseist die Veröffentlichung nicht für den Internetzugriff aktiviert.

  • [ @centralized_conflicts =] 'centralized_conflicts'
    Dieser Parameter wurde als veraltet markiert und wird nur aus Gründen der Abwärtskompatibilität für Skripts unterstützt. Verwenden Sie conflict_logging, um anzugeben, wo Konfliktdatensätze gespeichert werden sollen.

  • [ @dynamic_filters =] 'dynamic_filters'
    Aktiviert die Mergeveröffentlichung, um parametrisierte Zeilenfilter zu verwenden. dynamic_filters ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE.

    HinweisHinweis

    Sie sollten diesen Parameter nicht angeben, sondern stattdessen SQL Server zulassen, damit automatisch festgestellt wird, ob parametrisierte Zeilenfilter verwendet werden. Wenn Sie den Wert true für dynamic_filters angeben, müssen Sie für den Artikel einen parametrisierten Zeilenfilter definieren. Weitere Informationen finden Sie unter Definieren und Ändern eines parametrisierten Zeilenfilters für einen Mergeartikel.

  • [ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder'
    Legt fest, ob die Momentaufnahmedateien im Standardordner gespeichert werden. snapshot_in_default_folder ist vom Datentyp nvarchar(5). Der Standardwert ist TRUE. Bei true befinden sich die Momentaufnahmedateien im Standardordner. Bei false werden die Momentaufnahmedateien am alternativen Speicherort gespeichert, der durch alternate_snapshot_folder angegeben wird. Alternative Speicherorte können sich auf einem anderen Server, auf einem Netzlaufwerk oder auf einem Wechselmedium (z. B. CD-ROM oder Wechseldatenträger) befinden. Momentaufnahmedateien lassen sich auch auf einer FTP-Site (File Transfer Protocol) speichern, um zu einem späteren Zeitpunkt vom Abonnenten abgerufen zu werden. Beachten Sie, dass dieser Parameter auf TRUE festgelegt sein kann und dennoch ein Speicherort mit alt_snapshot_folder angegeben sein kann. Diese Kombination gibt an, dass die Momentaufnahmedateien sowohl im Standardpfad als auch im alternativen Pfad gespeichert werden.

  • [ @alt_snapshot_folder = ] 'alternate_snapshot_folder'
    Gibt den Speicherort des anderen Ordners für die Momentaufnahme an. alternate_snapshot_folder ist vom Datentyp nvarchar(255). Der Standardwert ist NULL.

  • [ @pre_snapshot_script = ] 'pre_snapshot_script'
    Gibt einen Zeiger auf einen Speicherort für SQL-Dateien (*.sql) an. pre_snapshot_script ist vom Datentyp nvarchar(255). Der Standardwert ist NULL. Der Merge-Agent führt pre_snapshot_script vor allen Skripts für replizierte Objekte aus, wenn die Momentaufnahme auf einem Abonnenten angewendet wird. Das Skript wird in dem Sicherheitskontext ausgeführt, der vom Merge-Agent beim Herstellen einer Verbindung mit der Abonnementdatenbank verwendet wird. Vor der Momentaufnahme ausgeführte Skripts werden nicht auf SQL Server Compact-Abonnenten ausgeführt.

  • [ @post_snapshot_script = ] 'post_snapshot_script'
    Gibt einen Zeiger auf einen Speicherort für SQL-Dateien (*.sql) an. post_snapshot_script ist vom Datentyp nvarchar(255). Der Standardwert ist NULL. Der Merge-Agent führt das nach der Momentaufnahme ausgeführte Skript aus, nachdem alle anderen Skripts und Daten für replizierte Objekte während einer Erstsynchronisierung angewendet wurden. Das Skript wird in dem Sicherheitskontext ausgeführt, der vom Merge-Agent beim Herstellen einer Verbindung mit der Abonnementdatenbank verwendet wird. Nach der Momentaufnahme ausgeführte Skripts werden nicht auf SQL Server Compact-Abonnenten ausgeführt.

  • [ @compress_snapshot = ] 'compress_snapshot'
    Gibt an, dass die Momentaufnahme, die in den Speicherort @alt_snapshot_folder geschrieben wurde, in das Microsoft CAB-Format komprimiert werden soll. compress_snapshot ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Der Wert false gibt an, dass die Momentaufnahme nicht komprimiert wird. Der Wert true gibt an, dass die Momentaufnahme komprimiert wird. Momentaufnahmedateien, die größer als 2 GB sind, können nicht komprimiert werden. Komprimierte Momentaufnahmedateien werden an der Stelle dekomprimiert, an der der Merge-Agent ausgeführt wird. Pullabonnements werden in der Regel mit komprimierten Momentaufnahmen verwendet, sodass die Dateien auf dem Abonnenten dekomprimiert werden. Die Momentaufnahme im Standardordner kann nicht komprimiert werden. Damit SQL Server Compact-Abonnenten unterstützt werden, müssen Sie false angeben.

  • [ @ftp_address = ] 'ftp_address'
    Die Netzwerkadresse des FTP-Diensts für den Verteiler. ftp_address ist vom Datentyp sysname und hat den Standardwert NULL. Gibt an, wo die Veröffentlichungsmomentaufnahmedateien zum Abholen durch den Merge-Agent eines Abonnenten abgelegt werden. Da diese Eigenschaft für jede Veröffentlichung gespeichert wird, kann jede Veröffentlichung einen unterschiedlichen Wert für ftp_address besitzen. Die Veröffentlichung muss die Weitergabe von Momentaufnahmen über FTP unterstützen.

  • [ @ftp_port= ] ftp_port
    Die Portnummer des FTP-Diensts für den Verteiler. ftp_port ist vom Datentyp int. Der Standardwert ist 21. Gibt an, wo die Veröffentlichungsmomentaufnahmedateien zum Abholen durch den Merge-Agent eines Abonnenten abgelegt werden. Da diese Eigenschaft für jede Veröffentlichung gespeichert wird, kann jede Veröffentlichung einen eigenen Wert für ftp_port besitzen.

  • [ @ftp_subdirectory = ] 'ftp_subdirectory'
    Gibt an, wo die Momentaufnahmedateien für den Merge-Agent des Abonnenten zum Abholen verfügbar sind, wenn die Veröffentlichung das Weitergeben von Momentaufnahmen mithilfe von FTP unterstützt. ftp_subdirectory ist vom Datentyp nvarchar(255) und hat den Standardwert NULL. Da diese Eigenschaft für jede Veröffentlichung gespeichert wird, kann jede Veröffentlichung ihren eigenen Wert für ftp_subdirctory besitzen oder aber keine Unterverzeichnisse verwenden. Dies wird durch den Wert NULL angezeigt.

    Wenn Momentaufnahmen für Veröffentlichungen vorab mit parametrisierten Filtern erstellt werden, dann muss die Datenmomentaufnahme für jede Abonnentenpartition jeweils in einem eigenen Ordner abgelegt sein. Die Verzeichnisstruktur für vorab über FTP generierte Momentaufnahmen muss der folgenden Struktur entsprechen:

    alternate_snapshot_folder\ftp\publisher_publicationDB_publication\partitionID.

    HinweisHinweis

    Die oben kursiv dargestellten Werte sind von den Festlegungen für die Veröffentlichung und Abonnentenpartition abhängig.

  • [ @ftp_login = ] 'ftp_login'
    Der Benutzername, mit dem eine Verbindung zum FTP-Dienst hergestellt wird. ftp_login ist vom Datentyp sysname. Der Standardwert ist "anonymous".

  • [ @ftp_password = ] 'ftp_password'
    Das Benutzerkennwort, mit dem eine Verbindung zum FTP-Dienst hergestellt wird. ftp_password ist vom Datentyp sysname. Der Standardwert ist NULL.

    SicherheitshinweisSicherheitshinweis

    Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort.

  • [ @conflict_retention = ] conflict_retention
    Gibt die Aufbewahrungsdauer in Tagen an, für die Konflikte beibehalten werden. conflict_retention ist vom Datentyp int mit dem Standard "14 Tage", bevor die Konfliktzeile von der Konflikttabelle gelöscht wird.

  • [ @keep_partition_changes = ] 'keep_partition_changes'
    Gibt an, ob Partitionsänderungsoptimierungen zu aktivieren sind, wenn vorausberechnete Partitionen nicht verwendet werden können. keep_partition_changes ist vom Datentyp nvarchar(5). Der Standardwert ist TRUE. Der Wert false bedeutet, dass Partitionsänderungen nicht optimiert werden, und werden vorausberechnete Partitionen nicht verwendet, erfolgt im Fall einer Datenänderung in einer Partition eine Überprüfung der an alle Abonnenten gesendeten Partitionen. true bedeutet, dass Partitionsänderungen optimiert werden, und nur Abonnenten, die über Zeilen in den geänderten Partitionen verfügen, sind betroffen. Legen Sie bei Verwendung vorausberechneter Partitionen use_partition_groups auf true und keep_partition_changes auf false fest. Weitere Informationen finden Sie unter Optimieren der Leistung parametrisierter Filter mithilfe vorausberechneter Partitionen.

    HinweisHinweis

    Wenn Sie den Wert truefür keep_partition_changes angeben, geben Sie den Wert 1 für den Momentaufnahme-Agent-Parameter -MaxNetworkOptimization an. Weitere Informationen zu diesem Parameter finden Sie unter Replikationsmomentaufnahme-Agent. Informationen zum Angeben von Agentparametern finden Sie unter Replikations-Agent-Verwaltung.

    Mit SQL Server Compact-Abonnenten muss keep_partition_changes auf "true" festgelegt werden, um sicherzustellen, dass Löschvorgänge ordnungsgemäß weitergegeben werden. Wenn die Einstellung auf "false" festgelegt ist, erhält der Abonnent möglicherweise mehr Zeilen als erwartet.

  • [ @allow_subscription_copy= ] 'allow_subscription_copy'
    Aktiviert oder deaktiviert die Option zum Kopieren der Abonnementdatenbanken, die diese Veröffentlichung abonniert haben. allow_subscription_copy ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Die Abonnementdatenbank, die kopiert wird, muss kleiner als 2 GB sein.

  • [ @allow_synctoalternate = ] 'allow_synctoalternate'
    Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

  • [ @validate_subscriber_info = ] 'validate_subscriber_info'
    Listet die Funktionen auf, mit denen eine Abonnentenpartition der veröffentlichten Daten definiert wird, wenn parametrisierte Zeilenfilter verwendet werden. validate_subscriber_info ist vom Datentyp nvarchar(500). Der Standardwert ist NULL. Diese Informationen werden vom Merge-Agent verwendet, um die Abonnentenpartition zu überprüfen. Wenn beispielsweise SUSER_SNAME im parametrisierten Zeilenfilter verwendet wird, sollte der Parameter @validate\_subscriber\_info=N'SUSER_SNAME()' lauten.

    HinweisHinweis

    Sie sollten diesen Parameter nicht angeben, sondern stattdessen SQL Server zulassen, damit das Filterkriterium automatisch ermittelt wird.

  • [ @add_to_active_directory = ] 'add_to_active_directory'
    Dieser Parameter wurde als veraltet markiert und wird nur aus Gründen der Abwärtskompatibilität für Skripts unterstützt. Für Microsoft Active Directory ist das Hinzufügen von Veröffentlichungsinformationen nicht länger möglich.

  • [ @max_concurrent_merge = ] maximum_concurrent_merge
    Die maximale Anzahl an gleichzeitigen Mergeprozessen. maximum_concurrent_merge ist vom Datentyp int. Der Standardwert ist 0. Der Wert 0 bedeutet für diese Eigenschaft, dass es keine Beschränkung hinsichtlich der Anzahl gleichzeitiger Mergeprozesse gibt, die zu einem beliebigen angegebenen Zeitpunkt ausgeführt werden. Diese Eigenschaft legt eine Grenze für die Anzahl von gleichzeitigen Mergeprozessen fest, die zu einem Zeitpunkt für eine Mergeveröffentlichung ausgeführt werden können. Wenn für einen Zeitpunkt eine größere Anzahl von Mergeprozessen geplant ist, als der Wert für eine Ausführung zulässt, werden die überzähligen Aufträge in eine Warteschlange gestellt, in der sie warten, bis ein aktuell ausgeführter Mergeprozess beendet wird.

  • [ @max_concurrent_dynamic_snapshots =] max_concurrent_dynamic_snapshots
    Die maximale Anzahl an Momentaufnahme-Agent-Sitzungen, die gleichzeitig ausgeführt werden können, um gefilterte Datenmomentaufnahmen für Abonnentenpartitionen zu generieren. maximum_concurrent_dynamic_snapshots ist vom Datentyp int. Der Standardwert ist 0. Bei Angabe des Werts 0 gibt es keine Einschränkung für die Anzahl von Momentaufnahmesitzungen. Wenn zum gleichen Zeitpunkt mehr Momentaufnahmeprozesse geplant sind, als der Wert für eine Ausführung zulässt, werden die überschüssigen Aufträge in eine Warteschlange eingereiht, in der sie darauf warten, dass ein aktuell ausgeführter Momentaufnahmeprozess abgeschlossen wird.

  • [ @use_partition_groups = ] 'use_partition_groups'
    Gibt an, dass vorausberechnete Partitionen verwendet werden sollen, um den Synchronisierungsprozess zu optimieren. use_partition_groups ist vom Datentyp nvarchar(5). Die folgenden Werte sind möglich:

    Wert

    Beschreibung

    true

    Die Veröffentlichung verwendet vorausberechnete Partitionen.

    false

    Die Veröffentlichung verwendet keine vorausberechneten Partitionen.

    NULL (Standard)

    Die Partitionierungsstrategie wird vom System festgelegt.

    Standardmäßig werden vorausberechnete Partitionen verwendet. Für use_partition_groups muss false festgelegt werden, um die Verwendung vorausberechneter Partitionen zu vermeiden. Wird NULL festgelegt, entscheidet das System, ob vorausberechnete Partitionen verwendet werden können. Können vorausberechnete Partitionen nicht verwendet werden, dann nimmt dieser Wert die Einstellung false an, und es werden keine Fehler generiert. In diesen Fällen kann keep_partition_changes auf true festgelegt werden, um eine Optimierung zu erreichen. Weitere Informationen finden Sie unter Parametrisierte Zeilenfilter und Optimieren der Leistung parametrisierter Filter mithilfe vorausberechneter Partitionen.

  • [ @publication_compatibility_level = ] backward_comp_level
    Gibt die Abwärtskompatibilität der Veröffentlichung an. backward_comp_level ist vom Datentyp nvarchar(6). Die folgenden Werte sind möglich:

    Wert

    Version

    90RTM

    SQL Server 2005

    100RTM

    SQL Server 2008

  • [ @replicate_ddl = ] replicate_ddl
    Gibt an, ob die Schemareplikation für die Veröffentlichung unterstützt wird. replicate_ddl ist vom Datentyp int. Der Standardwert ist 1. 1 zeigt an, dass auf dem Verleger ausgeführte DDL-Anweisungen (Data Definition Language, Datendefinitionssprache) repliziert werden, und 0 zeigt an, dass DDL-Anweisungen nicht repliziert werden. Weitere Informationen finden Sie unter Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken.

    Der @replicate\_ddl-Parameter wird berücksichtigt, wenn von einer DDL-Anweisung eine Spalte hinzugefügt wird. Der @replicate\_ddl-Parameter wird ignoriert, wenn von einer DDL-Anweisung eine Spalte aus den folgenden Gründen geändert oder gelöscht wird.

    • Wenn eine Spalte gelöscht wird, muss sysarticlecolumns aktualisiert werden, um zu verhindern, dass neue DML-Anweisungen die gelöschte Spalte aufnehmen, wodurch der Verteilungs-Agent fehlschlagen würde. Der @replicate\_ddl-Parameter wird ignoriert, da die Replikation immer die Schemaänderung replizieren muss.

    • Wenn eine Spalte geändert wird, hat sich möglicherweise der Quelldatentyp oder die NULL-Zulässigkeit geändert. Dies hat zur Folge, dass DML-Anweisungen einen Wert enthalten, der möglicherweise nicht mit der Tabelle beim Abonnenten kompatibel ist. Solche DML-Anweisungen können bewirken, dass der Verteilungs-Agent fehlschlägt. Der @replicate\_ddl-Parameter wird ignoriert, da die Replikation immer die Schemaänderung replizieren muss.

    • Wenn von einer DDL-Anweisung eine neue Spalte hinzugefügt wird, enthält sysarticlecolumns die neue Spalte nicht. DML-Anweisungen versuchen nicht, Daten für die neue Spalte zu replizieren. Der Parameter wird berücksichtigt, da sowohl das Replizieren als auch das Nicht-Replizieren der DDL akzeptabel ist.

  • [ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot'
    Gibt an, ob Abonnenten für diese Veröffentlichung den Momentaufnahmeprozess initiieren können, um die gefilterte Momentaufnahme für ihre Datenpartition zu generieren. allow_subscriber_initiated_snapshot ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Der Wert true gibt an, dass Abonnenten den Momentaufnahmeprozess initiieren können.

  • [ @allow_web_synchronization = ] 'allow_web_synchronization'
    Gibt an, ob die Veröffentlichung für die Websynchronisierung aktiviert ist. allow_web_synchronization ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. true gibt an, dass Abonnements für diese Veröffentlichung über HTTPS synchronisiert werden können. Weitere Informationen finden Sie unter Websynchronisierung für die Mergereplikation. Damit SQL Server Compact-Abonnenten unterstützt werden, müssen Sie true angeben.

  • [ @web_synchronization_url= ] 'web_synchronization_url'
    Gibt den Standardwert für die Internet-URL an, die für die Websynchronisierung verwendet wird. web_synchronization_url ist vom Datentyp nvarchar(500). Der Standardwert ist NULL. Definiert die Standard-Internet-URL, die für die Ausführung von sp_addmergepullsubscription_agent verwendet wird, wenn keine URL explizit angegeben ist.

  • [ @allow_partition_realignment = ] 'allow_partition_realignment'
    Bestimmt, ob Löschungen an den Abonnenten gesendet werden, wenn durch eine Änderung der Zeile auf Verlegerebene eine Änderung der zugehörigen Partition ausgelöst wird. allow_partition_realignment ist vom Datentyp nvarchar(5). Der Standardwert ist TRUE. Der Wert true sendet Löschungen an den Abonnenten, um die Ergebnisse einer Partitionsänderung zu reflektieren, indem Daten entfernt werden, die nicht mehr zur Partition des Abonnenten gehören. Der Wert false behält die Daten von einer alten Partition auf Abonnentenebene bei, wobei Änderungen an diesen Daten auf Verlegerebene nicht für den betreffenden Abonnenten repliziert werden. Jedoch werden Änderungen auf Abonnentenebene für den Verleger repliziert. Wenn Sie allow_partition_realignment auf false festlegen, werden Daten in einem Abonnement aus einer alten Partition beibehalten, wenn die Daten noch benötigt werden.

    HinweisHinweis

    Daten, die auf dem Abonnenten verbleiben, da allow_partition_realignment auf false festgelegt ist, sollten so behandelt werden, als ob sie schreibgeschützt sind. Dies wird jedoch vom Replikationssystem nicht erzwungen.

  • [ @retention_period_unit = ] 'retention_period_unit'
    Gibt die Einheiten für die durch retention festgelegte Beibehaltungsdauer an. retention_period_unit ist vom Datentyp nvarchar(10). Die folgenden Werte sind möglich:

    Wert

    Version

    day (default)

    Die Beibehaltungsdauer wird in Tagen angegeben.

    week

    Die Beibehaltungsdauer wird in Wochen angegeben.

    month

    Die Beibehaltungsdauer wird in Monaten angegeben.

    year

    Die Beibehaltungsdauer wird in Jahren angegeben.

  • [ @generation_leveling_threshold= ] generation_leveling_threshold
    Gibt die Anzahl der Änderungen an, die in einer Generierung enthalten sind. Eine Generierung ist eine Auflistung von Änderungen, die an einen Verleger oder Abonnenten übermittelt werden. generation_leveling_threshold ist vom Datentyp int. Der Standardwert ist 1000.

  • [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy
    Gibt an, ob Änderungen vom Abonnenten hochgeladen werden, bevor eine automatische erneute Initialisierung erfolgt, die für eine Änderung an der Veröffentlichung erforderlich ist, wobei der Wert 1 für @ force_reinit_subscription angegeben wurde. automatic_reinitialization_policy ist vom Datentyp bit. Der Standardwert ist 0. 1 bedeutet, dass Änderungen vom Abonnenten vor einer automatischen erneuten Initialisierung hochgeladen werden.

    Wichtiger HinweisWichtig

    Wenn Sie einen parametrisierten Zeilenfilter hinzufügen, löschen oder ändern, können bei der erneuten Initialisierung noch ausstehende Änderungen am Abonnenten nicht durch Hochladen auf den Verleger übertragen werden. Wenn Sie ausstehende Änderungen hochladen möchten, sollten Sie vor dem Ändern des Filters alle Abonnements synchronisieren.

  • [ @conflict_logging = ] 'conflict_logging'
    Gibt an, wo Konfliktdatensätze gespeichert werden. conflict_logging ist vom Datentyp nvarchar(15). Die folgenden Werte sind möglich:

    Wert

    Beschreibung

    publisher

    Die Konfliktdatensätze werden auf dem Verleger gespeichert.

    subscriber

    Die Konfliktdatensätze werden auf dem Abonnenten gespeichert, von dem der Konflikt verursacht wurde. Wird für SQL Server Compact-Abonnenten nicht unterstützt.

    both

    Die Konfliktdatensätze werden auf dem Verleger und auf dem Abonnenten gespeichert.

    NULL (Standard)

    Von der Replikation wird conflict_logging automatisch auf both festgelegt, wenn backward_comp_level den Wert 90RTM hat. In allen anderen Fällen wird publisher festgelegt.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_addmergepublication wird bei der Mergereplikation verwendet.

Zum Auflisten von Veröffentlichungsobjekten für Active Directory mit dem @add_to_active_directory-Parameter muss das SQL Server-Objekt bereits in Active Directory erstellt worden sein.

Wenn mehrere Veröffentlichungen vorhanden sind, die dasselbe Datenbankobjekt veröffentlichen, replizieren nur Veröffentlichungen, die für replicate_ddl den Wert 1 besitzen, die DDL-Anweisungen ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION und ALTER TRIGGER. Eine ALTER TABLE DROP COLUMN DDL-Anweisung wird hingegen von allen Veröffentlichungen repliziert, die die gelöschte Spalte veröffentlichen.

Für SQL Server Compact-Abonnenten wird der Wert von alternate_snapshot_folder nur verwendet, wenn snapshot_in_default_folder auf false festgelegt ist.

Damit an einer Veröffentlichung mit aktivierter DDL-Replikation (replicate_ddl = 1) nicht replizierende DDL-Änderungen vorgenommen werden können, muss zuerst durch Ausführen von sp_changemergepublication (Transact-SQL) für replicate_ddl der Wert 0 festgelegt werden. Nachdem die nicht replizierenden DDL-Anweisungen ausgegeben wurden, kann durch erneutes Ausführen von sp_changemergepublication die DDL-Replikation wieder aktiviert werden.

Beispiel

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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".

--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2012'; 
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @login = $(Login);
SET @password = $(Password);

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
  @dbname=@publicationDB, 
  @optname=N'merge publish',
  @value = N'true' 

-- Create a new merge publication, explicitly setting the defaults. 
USE [AdventureWorks2012]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks2012.',
  @publication_compatibility_level  = N'120RTM';

-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot 
  @publication = @publication, 
  @job_login = @login, 
  @job_password = @password;
GO

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_addmergepublication ausführen.

Siehe auch

Verweis

sp_changemergepublication (Transact-SQL)

sp_dropmergepublication (Transact-SQL)

sp_helpmergepublication (Transact-SQL)

Gespeicherte Replikationsprozeduren (Transact-SQL)

Konzepte

Erstellen einer Veröffentlichung

Veröffentlichen von Daten und Datenbankobjekten