Freigeben über


sp_addmergepublication (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

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

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @publication = ] N'Publikation'

Der Name der zu erstellenden Zusammenführungsveröffentlichung. @publication ist "sysname" ohne Standard und darf nicht das Schlüsselwort ALLsein. Der Name der Veröffentlichung muss innerhalb der Datenbank eindeutig sein.

[ @description = ] N'description'

Die Beschreibung der Publikation. @description ist nvarchar(255), mit einem Standardwert von NULL.

[ @retention = ] Aufbewahrung

Der Aufbewahrungszeitraum in Aufbewahrungszeitraumseinheiten, für die Änderungen für die angegebene @publication gespeichert werden sollen. @retention ist int, mit einem Standardwert von 14. Aufbewahrungszeitraumseinheiten werden durch @retention_period_unit definiert. Wenn das Abonnement nicht innerhalb des Aufbewahrungszeitraums synchronisiert wird und die ausstehenden Änderungen, die es erhalten hätte, durch einen Bereinigungsvorgang beim Distributor entfernt werden, läuft das Abonnement ab und muss erneut initialisiert werden. Die maximal zulässige Beibehaltungsdauer entspricht der Anzahl von Tagen zwischen dem 31. Dezember 9999 und dem aktuellen Datum.

Hinweis

Die Beibehaltungsdauer für Mergeveröffentlichungen weist eine 24-stündige Kulanzfrist auf, um Abonnenten in unterschiedlichen Zeitzonen aufzunehmen. Wenn Sie beispielsweise eine Beibehaltungsdauer von einem Tag festgelegt haben, beträgt die tatsächliche Beibehaltungsdauer 48 Stunden.

[ @sync_mode = ] N'sync_mode'

Der Modus der anfänglichen Synchronisierung von Abonnenten zur Publikation. @sync_mode ist nvarchar(10) und kann einen der folgenden Werte aufweisen.

Wert Beschreibung
native (Standardwert) Erstellt eine Massenkopierprogramm-Ausgabe aller Tabellen im einheitlichen Modus.
character Erstellt eine Massenkopierprogramm-Ausgabe aller Tabellen im Zeichenmodus. Erforderlich, um SQL Server Compact- und Nicht-SQL Server-Abonnenten zu unterstützen.

[ @allow_push = ] N'allow_push'

Gibt an, ob für die angegebene Veröffentlichung Pushabonnements erstellt werden können. @allow_push ist nvarchar(5) mit einem Standardwert von true, der Pushabonnements für die Publikation zulässt.

[ @allow_pull = ] N'allow_pull'

Gibt an, ob für die angegebene Veröffentlichung Pullabonnements erstellt werden können. @allow_pull ist nvarchar(5) mit einem Standardwert von true, der Pullabonnements für die Publikation zulässt. Sie müssen "true" angeben, um SQL Server Compact-Abonnenten zu unterstützen.

[ @allow_anonymous = ] N'allow_anonymous'

Gibt an, ob für die angegebene Veröffentlichung anonyme Abonnements erstellt werden können. @allow_anonymous ist nvarchar(5), mit einem Standardwert von true, der anonyme Abonnements für die Publikation zulässt. Um SQL Server Compact-Abonnenten zu unterstützen, müssen Sie angeben true.

[ @enabled_for_internet = ] N'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 nvarchar(5) mit einem Standardwert von false. Wenn truedie Synchronisierungsdateien für die Publikation in das C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp Verzeichnis eingefügt werden. Der Benutzer muss das FTP-Verzeichnis erstellen. Wenn falsedie Publikation für den Internetzugriff nicht aktiviert ist.

[ @centralized_conflicts = ] N'centralized_conflicts'

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten. Verwenden Sie @conflict_logging , um den Speicherort anzugeben, an dem Konfliktdatensätze gespeichert sind.

[ @dynamic_filters = ] N'dynamic_filters'

Aktiviert die Mergeveröffentlichung, um parametrisierte Zeilenfilter zu verwenden. @dynamic_filters ist nvarchar(5) mit einem Standardwert von false.

Hinweis

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

[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'

Legt fest, ob die Momentaufnahmedateien im Standardordner gespeichert werden. @snapshot_in_defaultfolder ist nvarchar(5) mit einem Standardwert von true. Wenn true, Snapshot-Dateien im Standardordner gefunden werden. Wenn false, Snapshot-Dateien werden an dem 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 befinden (z. B. Wechseldatenträger). Momentaufnahmedateien lassen sich auch auf einer FTP-Site (File Transfer Protocol) speichern, um zu einem späteren Zeitpunkt vom Abonnenten abgerufen zu werden. Dieser Parameter kann "true" sein und dennoch über eine durch @alt_snapshot_folder angegebene Position verfügen. Diese Kombination gibt an, dass die Momentaufnahmedateien sowohl an den Standardspeicherorten als auch an alternativen Speicherorten gespeichert werden.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Gibt den Speicherort des anderen Ordners für die Momentaufnahme an. @alt_snapshot_folder ist nvarchar(255), mit einem Standardwert von NULL.

[ @pre_snapshot_script = ] N'pre_snapshot_script'

Gibt einen Zeiger auf einen .sql Dateispeicherort an. @pre_snapshot_script ist nvarchar(255), mit einem Standardwert von NULL. Die Merge-Agent führt das Skript vor der Momentaufnahme vor einem der replizierten Objektskripts aus, wenn die Momentaufnahme bei 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. Pre-Snapshot-Skripts werden nicht für SQL Server Compact-Abonnenten ausgeführt.

[ @post_snapshot_script = ] N'post_snapshot_script'

Gibt einen Zeiger auf einen .sql Dateispeicherort an. @post_snapshot_script ist nvarchar(255), wobei die Standardeinstellung istNULL. 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. Post-Snapshot-Skripts werden nicht für SQL Server Compact-Abonnenten ausgeführt.

[ @compress_snapshot = ] N'compress_snapshot'

Gibt an, dass die momentaufnahme, die in den @alt_snapshot_folder Speicherort geschrieben wurde, in das Microsoft CAB-Format komprimiert wird. @compress_snapshot ist nvarchar(5), mit einem Standardwert von false.

  • false Gibt an, dass die Momentaufnahme nicht komprimiert werden soll.

  • true Gibt an, dass die Momentaufnahme komprimiert wird.

Momentaufnahmendateien, 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. Um SQL Server Compact-Abonnenten zu unterstützen, müssen Sie angeben false.

[ @ftp_address = ] N'ftp_address'

Die Netzwerkadresse des FTP-Diensts für den Distributor. @ftp_address ist "sysname" mit dem Standardwert "NULL. Gibt an, wo sich Die Snapshotdateien für die Publikation befinden, um die Merge-Agent eines Abonnenten aufzunehmen. Da diese Eigenschaft für jede Publikation gespeichert wird, kann jede Publikation über eine andere @ftp_address verfügen. Die Veröffentlichung muss die Weitergabe von Momentaufnahmen über FTP unterstützen.

[ @ftp_port = ] ftp_port

Die Portnummer des FTP-Diensts für den Distributor. @ftp_port ist int mit einem Standardwert von 21. Gibt an, wo die Veröffentlichungsmomentaufnahmedateien zum Abholen durch den Merge-Agent eines Abonnenten abgelegt werden. Da diese Eigenschaft für jede Publikation gespeichert ist, kann jede Publikation über eine eigene @ftp_port verfügen.

[ @ftp_subdirectory = ] N'ftp_subdirectory'

Gibt an, wo die Momentaufnahmedateien für die Merge-Agent des Abonnenten verfügbar sind, um aufzunehmen, wenn die Publikation das Verteilen von Momentaufnahmen mithilfe von FTP unterstützt. @ftp_subdirectory ist "nvarchar(255)" mit einem Standardwert von ftp. Da diese Eigenschaft für jede Publikation gespeichert wird, kann jede Publikation über ein eigenes @ftp_subdirctory verfügen oder kein Unterverzeichnis haben, das mit einem NULL Wert angegeben ist.

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

Hinweis

Die Werte im vorherigen Beispiel (in eckigen Klammern) hängen von den Besonderheiten der Publikations- und Abonnentenpartition ab.

[ @ftp_login = ] N'ftp_login'

Der Benutzername, der zum Herstellen einer Verbindung mit dem FTP-Dienst verwendet wird. @ftp_login ist "sysname" mit dem Standardwert "anonymous.

[ @ftp_password = ] N'ftp_password'

Das Zum Herstellen einer Verbindung mit dem FTP-Dienst verwendete Benutzerkennwort. @ftp_password ist "sysname" mit der Standardeinstellung "NULL.

Wichtig

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 int, mit einer Standardeinstellung von 14 Tagen, bevor die Konfliktzeile aus der Konflikttabelle gelöscht wird.

[ @keep_partition_changes = ] N'keep_partition_changes'

Gibt an, ob Partitionsänderungsoptimierungen aktiviert werden sollen, wenn vorkompilierte Partitionen nicht verwendet werden können. @keep_partition_changes ist nvarchar(5), mit einem Standardwert von true.

  • false bedeutet, dass Partitionsänderungen nicht optimiert sind und wenn vorkompilierte Partitionen nicht verwendet werden, werden die an alle Abonnenten gesendeten Partitionen überprüft, wenn Daten in einer Partition geändert werden.

  • true bedeutet, dass Partitionsänderungen optimiert sind und nur Abonnenten mit Zeilen in den geänderten Partitionen betroffen sind.

Wenn Sie vorkompilierte Partitionen verwenden, legen Sie @use_partition_groups auf true @keep_partition_changes falsefest. Weitere Informationen finden Sie unter Parametrisierte Filter – Optimieren für vorkompilierte Partitionen.

Hinweis

Wenn Sie einen Wert true für @keep_partition_changes angeben, geben Sie einen Wert 1 für den parameter Momentaufnahmen-Agent -MaxNetworkOptimizationan. Weitere Informationen zu diesem Parameter finden Sie unter "Replikation Momentaufnahmen-Agent". Informationen zum Angeben von Agentparametern finden Sie unter Replikations-Agent-Verwaltung.

Bei SQL Server Compact-Abonnenten müssen @keep_partition_changes festgelegt werden, um true sicherzustellen, dass Löschdaten ordnungsgemäß verteilt werden. Bei Festlegung auf false hat der Abonnent möglicherweise mehr Zeilen als erwartet.

[ @allow_subscription_copy = ] N'allow_subscription_copy'

Aktiviert oder deaktiviert die Option zum Kopieren der Abonnementdatenbanken, die diese Veröffentlichung abonniert haben. @allow_subscription_copy ist nvarchar(5), mit einem Standardwert von false. Die Größe der zu kopierenden Abonnementdatenbank muss kleiner als 2 GB sein.

[ @allow_synctoalternate = ] N'allow_synctoalternate'

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @validate_subscriber_info = ] N'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 nvarchar(500), wobei die Standardeinstellung istNULL. Diese Informationen werden vom Merge-Agent verwendet, um die Abonnentenpartition zu überprüfen. Wenn z . B. SUSER_SNAME im parametrisierten Zeilenfilter verwendet wird, sollte der Parameter sein @validate_subscriber_info=N'SUSER_SNAME().

Hinweis

Sie sollten diesen Parameter nicht angeben, sondern SQL Server stattdessen erlauben, das Filterkriterium automatisch zu bestimmen.

[ @add_to_active_directory = ] N'add_to_active_directory'

Dieser Parameter ist veraltet und wird für die Abwärtskompatibilität von Skripts beibehalten. Sie können dem Microsoft Active Directory keine Publikationsinformationen mehr hinzufügen.

[ @max_concurrent_merge = ] max_concurrent_merge

Die maximale Anzahl an gleichzeitigen Mergeprozessen. @max_concurrent_merge ist int mit einem Standardwert von 0. Ein Wert von 0 " bedeutet, dass die Anzahl der gleichzeitigen Zusammenführungsprozesse, die zu einem bestimmten Zeitpunkt ausgeführt werden, nicht begrenzt ist.

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 mehr Zusammenführungsprozesse gleichzeitig geplant sind als der wert, der ausgeführt werden darf, werden die überschüssigen Aufträge in eine Warteschlange gesetzt, und warten Sie, bis ein aktuell ausgeführter Zusammenführungsprozess abgeschlossen ist.

[ @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. @max_concurrent_dynamic_snapshots ist int mit einem Standardwert von 0. Wenn 0, gibt es keine Beschränkung für die Anzahl der Momentaufnahmesitzungen. Wenn mehr Momentaufnahmenprozesse gleichzeitig geplant sind als der zu ausführende Wert, werden die überzähliger Aufträge in eine Warteschlange gesetzt und warten, bis ein aktuell ausgeführter Momentaufnahmeprozess abgeschlossen ist.

[ @use_partition_groups = ] N'use_partition_groups'

Gibt an, dass vorausberechnete Partitionen verwendet werden sollen, um den Synchronisierungsprozess zu optimieren. @use_partition_groups ist nvarchar(5) und kann einer der folgenden Werte sein:

Wert Beschreibung
true Die Veröffentlichung verwendet vorausberechnete Partitionen.
false Die Publikation verwendet keine vorkompilierten Partitionen.
NULL (Standard) Die Partitionierungsstrategie wird vom System festgelegt.

Standardmäßig werden vorausberechnete Partitionen verwendet. Um die Verwendung vorkompilierten Partitionen zu vermeiden, muss @use_partition_groups auf false. Wenn NULL, entscheidet das System, ob vorkompilierte Partitionen verwendet werden können. Wenn vorkompilierte Partitionen nicht verwendet werden können, wird dieser Wert effektiv ohne false Fehler generiert. In solchen Fällen kann @keep_partition_changes so eingestellt werden, dass true eine Optimierung bereitgestellt wird. Weitere Informationen finden Sie unter Parameterisierte Filter – parametrisierte Zeilenfilter und parametrisierte Filter – Optimieren für vorkompilierte Partitionen.

[ @publication_compatibility_level = ] N'publication_compatibility_level'

Gibt die Abwärtskompatibilität der Veröffentlichung an. @publication_compatibility_level ist nvarchar(6) und kann einer der folgenden Werte sein:

Wert Version
90RTM SQL Server 2005 (9.x)
100RTM SQL Server 2008 (10.0.x)

[ @replicate_ddl = ] replicate_ddl

Gibt an, ob die Schemareplikation für die Publikation unterstützt wird. @replicate_ddl ist int, mit einem Standardwert von NULL. 1 gibt an, dass DDL-Anweisungen (Data Definition Language), die an dem Herausgeber ausgeführt werden, repliziert werden, und 0 gibt 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 eine DDL-Anweisung eine Spalte hinzufügt. Der parameter @replicate_ddl wird ignoriert, wenn eine DDL-Anweisung aus den folgenden Gründen eine Spalte ändert oder abbricht.

  • Wenn eine Spalte verworfen wird, muss aktualisiert werden, um zu verhindern, sysarticlecolumns dass neue DML-Anweisungen die verworfene Spalte einschließen, die dazu führen würde, dass der Verteilungs-Agent fehlschlägt. Der parameter @replicate_ddl 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 Nullierbarkeit geändert, wodurch DML-Anweisungen einen Wert enthalten, der möglicherweise nicht mit der Tabelle am Abonnenten kompatibel ist. Solche DML-Anweisungen können bewirken, dass der Verteilungs-Agent fehlschlägt. Der parameter @replicate_ddl wird ignoriert, da die Replikation immer die Schemaänderung replizieren muss.

  • Wenn eine DDL-Anweisung eine neue Spalte hinzufügt, sysarticlecolumns wird die neue Spalte nicht eingeschlossen. 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 = ] N'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 nvarchar(5), mit einem Standardwert von false. true gibt an, dass Abonnenten den Momentaufnahmeprozess initiieren können.

[ @allow_web_synchronization = ] N'allow_web_synchronization'

Gibt an, ob die Veröffentlichung für die Websynchronisierung aktiviert ist. @allow_web_synchronization ist nvarchar(5), mit einem Standardwert von false. true Gibt an, dass Abonnements für diese Publikation über HTTPS synchronisiert werden können. Weitere Informationen finden Sie unter Web Synchronization for Merge Replication. Um SQL Server Compact-Abonnenten zu unterstützen, müssen Sie angeben true.

[ @web_synchronization_url = ] N'web_synchronization_url'

Gibt den Standardwert für die Internet-URL an, die für die Websynchronisierung verwendet wird. @web_synchronization_url ist nvarchar(500), mit einem Standardwert von NULL. Definiert die Standard-Internet-URL, wenn eine nicht explizit festgelegt wird, wenn sp_addmergepullsubscription_agent ausgeführt wird.

[ @allow_partition_realignment = ] N'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 "nvarchar(5)", mit einem Standardwert von true.

  • true sendet Löschungen an den Abonnenten, um die Ergebnisse einer Partitionsänderung widerzuspiegeln, indem Daten entfernt werden, die nicht mehr Teil der Partition des Abonnenten sind.

  • false belässt die Daten aus einer alten Partition im Abonnenten, bei der Änderungen, die an diesen Daten in Publisher vorgenommen wurden, nicht in diesen Abonnenten repliziert werden, aber Änderungen, die am Abonnenten vorgenommen wurden, in Publisher replizieren.

Das Festlegen @allow_partition_realignment false wird verwendet, um Daten in einem Abonnement aus einer alten Partition aufzubewahren, wenn die Daten für historische Zwecke zugänglich sein müssen.

Hinweis

Daten, die aufgrund der Einstellung @allow_partition_realignment false beim Abonnenten verbleiben, sollten als schreibgeschützt behandelt werden. Dies wird jedoch nicht vom Replikationssystem erzwungen.

[ @retention_period_unit = ] N'retention_period_unit'

Gibt die Einheiten für den aufbewahrungszeitraum an, der durch @retention festgelegt wird. @retention_period_unit ist nvarchar(10) und kann einen der folgenden Werte aufweisen.

Wert Version
day (Standard) 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 Generation enthalten sind. Eine Generierung ist eine Auflistung von Änderungen, die an einen Verleger oder Abonnenten übermittelt werden. @generation_leveling_threshold ist int, mit einem Standardwert von 1000.

[ @automatic_reinitialization_policy = ] automatic_reinitialization_policy

Gibt an, ob Änderungen aus dem Abonnenten hochgeladen werden, bevor eine automatische Neuiniialisierung erforderlich ist, die durch eine Änderung an der Publikation erforderlich ist, wobei ein Wert für 1 @force_reinit_subscription angegeben wurde. @automatic_reinitialization_policy ist bit, mit einem Standardwert von 0.

1 bedeutet, dass Änderungen aus dem Abonnenten hochgeladen werden, bevor eine automatische Neuiniialisierung eintritt.

Wichtig

Wenn Sie einen parametrisierten Filter hinzufügen, ablegen oder ändern, können ausstehende Änderungen am Abonnenten während der Erneutitialisierung nicht in den Publisher hochgeladen werden. Wenn Sie ausstehende Änderungen hochladen möchten, sollten Sie vor dem Ändern des Filters alle Abonnements synchronisieren.

[ @conflict_logging = ] N'conflict_logging'

Gibt an, wo Konfliktdatensätze gespeichert werden. @conflict_logging ist nvarchar(15) und kann einen der folgenden Werte aufweisen:

Wert Beschreibung
publisher Die Konfliktdatensätze werden auf dem Verleger gespeichert.
subscriber Die Konfliktdatensätze werden auf dem Abonnenten gespeichert, der den Konflikt verursacht hat. 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) Die Replikation legt @conflict_logging automatisch fest, both wenn der Wert @publication_compatibility_level ist 90RTM und publisher in allen anderen Fällen.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_addmergepublication wird in der Seriendruckreplikation verwendet.

Zum Auflisten von Publikationsobjekten im Active Directory mithilfe des @add_to_active_directory Parameters muss das SQL Server-Objekt bereits im Active Directory erstellt werden.

Wenn mehrere Publikationen vorhanden sind, die dasselbe Datenbankobjekt veröffentlichen, werden nur Publikationen mit einem @replicate_ddl Wert der 1 replizierten ALTER TABLE, , ALTER VIEW, , ALTER PROCEDURE, ALTER FUNCTIONund ALTER TRIGGER DDL-Anweisungen veröffentlicht. Eine ALTER TABLE DROP COLUMN DDL-Anweisung wird jedoch von allen Publikationen repliziert, die die verworfene Spalte veröffentlichen.

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

Wenn die DDL-Replikation für eine Publikation aktiviert (@replicate_ddl = 1) ist, müssen sp_changemergepublication zuerst ausgeführt werden, um DDL-Änderungen an der Publikation nicht replizieren zu können, um @replicate_ddl festzulegen0. Nachdem die nicht replizierenden DDL-Anweisungen ausgestellt wurden, kann erneut ausgeführt werden, sp_changemergepublication um die DDL-Replikation wieder zu aktivieren.

Beispiele

-- 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'AdventureWorks2022'; 
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 [AdventureWorks2022]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks2022.',
  @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 db_owner feste Datenbankrolle können ausgeführt werden sp_addmergepublication.