sp_addmergearticle (Transact-SQL)
Fügt einer vorhandenen Mergeveröffentlichung einen Artikel hinzu. Diese gespeicherte Prozedur wird auf Verlegerebene für die Veröffentlichungsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
Syntax
sp_addmergearticle [ @publication = ] 'publication'
, [ @article = ] 'article'
, [ @source_object = ] 'source_object'
[ , [ @type = ] 'type' ]
[ , [ @description = ] 'description' ]
[ , [ @column_tracking = ] 'column_tracking' ]
[ , [ @status = ] 'status' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @subset_filterclause = ] 'subset_filterclause' ]
[ , [ @article_resolver = ] 'article_resolver' ]
[ , [ @resolver_info = ] 'resolver_info' ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @auto_identity_range = ] 'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @verify_resolver_signature = ] verify_resolver_signature ]
[ , [ @destination_object = ] 'destination_object' ]
[ , [ @allow_interactive_resolver = ] 'allow_interactive_resolver' ]
[ , [ @fast_multicol_updateproc = ] 'fast_multicol_updateproc' ]
[ , [ @check_permissions = ] check_permissions ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @published_in_tran_pub = ] 'published_in_tran_pub' ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @logical_record_level_conflict_detection = ] 'logical_record_level_conflict_detection' ]
[ , [ @logical_record_level_conflict_resolution = ] 'logical_record_level_conflict_resolution' ]
[ , [ @partition_options = ] partition_options ]
[ , [ @processing_order = ] processing_order ]
[ , [ @subscriber_upload_options = ] subscriber_upload_options ]
[ , [ @identityrangemanagementoption = ] 'identityrangemanagementoption' ]
[ , [ @delete_tracking = ] delete_tracking ]
[ , [ @compensate_for_errors = ] 'compensate_for_errors' ]
[ , [ @stream_blob_columns = ] 'stream_blob_columns' ]
Argumente
[ @publication= ] 'publication'
Entspricht dem Namen der Veröffentlichung, die den Artikel enthält. publication ist vom Datentyp sysname und hat keinen Standardwert.[ @article= ] 'article'
Ist der Name des Artikels. Der Name muss innerhalb der Veröffentlichung eindeutig sein. article ist vom Datentyp sysname und hat keinen Standardwert. article muss sich auf dem lokalen Computer befinden, der Microsoft SQL Server ausführt, und den Regeln für Bezeichner entsprechen.[ @source_object= ] 'source_object'
Entspricht dem zu veröffentlichenden Datenbankobjekt. source_object ist vom Datentyp sysname und hat keinen Standardwert. Weitere Informationen zu den Objekttypen, die mithilfe der Mergereplikation veröffentlicht werden können, finden Sie unter Veröffentlichen von Daten und Datenbankobjekten.[ @type= ] 'type'
Entspricht dem Artikeltyp. type ist vom Datentyp sysname. Der Standardwert ist table. Die folgenden Werte sind möglich:Wert
Beschreibung
table (Standard)
Tabelle mit Schema und Daten. Die Replikation überwacht die Tabelle, um die zu replizierenden Daten zu ermitteln.
func schema only
Nur Funktion mit Schema.
indexed view schema only
Nur indizierte Sicht mit Schema.
proc schema only
Nur gespeicherte Prozedur mit Schema
synonym schema only
Nur Synonym mit Schema
view schema only
Nur Sicht mit Schema
[ @description= ] 'description'
Eine Beschreibung des Artikels. description ist vom Datentyp nvarchar(255). Der Standardwert ist NULL.[ @column_tracking= ] 'column_tracking'
Entspricht der Einstellung für die Nachverfolgung auf Spaltenebene. column_tracking ist vom Datentyp nvarchar(10). Der Standardwert ist FALSE. trueaktiviert die Spaltennachverfolgung. false deaktiviert die Spaltennachverfolgung und belässt die Konflikterkennung auf Zeilenebene. Wenn die Tabelle bereits in anderen Mergereplikationen veröffentlicht ist, müssen Sie denselben Wert für die Spaltenprotokollierung verwenden, der von bereits bestehenden Artikeln für diese Tabelle verwendet wird. Dieser Parameter ist nur für Tabellenartikel spezifisch.Hinweis
Wenn Zeilennachverfolgung zur Konflikterkennung verwendet wird (Standard), kann die Basistabelle maximal 1024 Spalten enthalten. Die Spalten müssen aber aus dem Artikel herausgefiltert werden, sodass maximal 246 Spalten veröffentlicht werden.Wenn Spaltennachverfolgung verwendet wird, kann die Basistabelle maximal 246 Spalten enthalten.
[ @status= ] 'status'
Entspricht dem Status des Artikels. status ist vom Datentyp nvarchar(10). Der Standardwert ist unsynced. Bei active wird das Anfangsverarbeitungsskript zum Veröffentlichen der Tabelle ausgeführt. Bei unsynced wird das Anfangsverarbeitungsskript zum Veröffentlichen der Tabelle ausgeführt, wenn der Momentaufnahme-Agent das nächste Mal ausgeführt wird.[ @pre_creation_cmd= ] 'pre_creation_cmd'
Gibt den Vorgang an, der vom System auszuführen ist, wenn bei Übernahme der Momentaufnahme die Tabelle auf Abonnentenebene vorhanden ist. pre_creation_cmd ist vom Datentyp nvarchar(10). Die folgenden Werte sind möglich:Wert
Beschreibung
Keiner
Wenn die Tabelle bereits auf dem Abonnenten vorhanden ist, wird keine Aktion ausgeführt.
delete
Ein Löschvorgang wird auf der Grundlage der WHERE-Klausel im Teilmengenfilter ausgegeben.
drop (Standard)
Die Tabelle wird vor dem erneuten Erstellen gelöscht. Erforderlich für die Unterstützung von Microsoft SQL Server Compact-Abonnenten.
truncate
Schneidet die Zieltabelle ab.
[ @creation_script= ] 'creation_script'
Entspricht dem Pfad und Namen eines optionalen Artikelschemaskripts, mit dem der Artikel in der Abonnementdatenbank erstellt wird. creation_script ist vom Datentyp nvarchar(255). Der Standardwert ist NULL.Hinweis
Erstellungsskripts werden auf SQL Server Compact-Abonnenten nicht ausgeführt.
[ @schema_option= ] schema_option
Ist eine Bitmap der Schemagenerierungsoption für den angegebenen Artikel. schema_option ist vom Datentyp binary(8) und kann dem Produkt | (bitweises OR) für mindestens einen der folgenden Werte entsprechen.Wert
Beschreibung
0x00
Deaktiviert die Skripterstellung durch den Momentaufnahme-Agent und verwendet das in creation_script definierte bereitgestellte Skript zur Voraberstellung eines Schemas.
0x01
Generiert die Objekterstellung (CREATE TABLE, CREATE PROCEDURE usw.). Dieser Wert ist der Standardwert für alle Artikel mit gespeicherten Prozeduren.
0x10
Generiert einen entsprechenden gruppierten Index. Auch wenn diese Option nicht festgelegt ist, werden Indizes bezüglich der Primärschlüssel und der UNIQUE-Einschränkungen generiert, falls diese für eine veröffentlichte Tabelle bereits definiert sind.
0x20
Konvertiert benutzerdefinierte Datentypen (UDT) auf dem Abonnenten in Basisdatentypen. Diese Option kann nicht verwendet werden, wenn eine CHECK- oder DEFAULT-Einschränkung für eine UDT-Spalte vorhanden ist, wenn eine UDT-Spalte Teil des Primärschlüssels ist oder wenn eine berechnete Spalte auf eine UDT-Spalte verweist.
0x40
Generiert entsprechende nicht gruppierte Indizes. Auch wenn diese Option nicht festgelegt ist, werden Indizes bezüglich der Primärschlüssel und der UNIQUE-Einschränkungen generiert, falls diese für eine veröffentlichte Tabelle bereits definiert sind.
0x80
Repliziert PRIMARY KEY-Einschränkungen. Alle Indizes bezüglich der Einschränkung werden ebenfalls repliziert, auch wenn die Optionen 0x10 und 0x40 nicht aktiviert sind.
0x100
Repliziert Benutzertrigger für einen Tabellenartikel, wenn definiert.
0x200
Repliziert FOREIGN KEY-Einschränkungen. Wenn die Tabelle, auf die verwiesen wird, nicht Teil einer Veröffentlichung ist, werden für eine veröffentlichte Tabelle keine FOREIGN KEY-Einschränkungen repliziert.
0x400
Repliziert CHECK-Einschränkungen.
0x800
Repliziert Standards.
0x1000
Repliziert die Sortierung auf Spaltenebene.
0x2000
Repliziert erweiterte Eigenschaften, die dem Quellobjekt des veröffentlichten Artikels zugeordnet sind.
0x4000
Repliziert UNIQUE-Einschränkungen. Alle Indizes bezüglich der Einschränkung werden ebenfalls repliziert, auch wenn die Optionen 0x10 und 0x40 nicht aktiviert sind.
0x8000
Diese Option ist für Verleger, auf denen SQL Server 2005 oder höher ausgeführt wird, nicht gültig.
0x10000
Repliziert CHECK-Einschränkungen als NOT FOR REPLICATION, sodass die Einschränkungen während der Synchronisierung nicht erzwungen werden.
0x20000
Repliziert FOREIGN KEY-Einschränkungen als NOT FOR REPLICATION, sodass diese Einschränkungen bei der Synchronisierung nicht erzwungen werden.
0x40000
Repliziert Dateigruppen, die mit einer partitionierten Tabelle oder einem Index verbunden sind.
0x80000
Repliziert das Partitionsschema für eine partitionierte Tabelle.
0x100000
Repliziert das Partitionsschema für einen partitionierten Index.
0x200000
Repliziert Tabellenstatistiken.
0x400000
Repliziert Standardbindungen.
0x800000
Repliziert Regelbindungen.
0x1000000
Repliziert den Volltextindex.
0x2000000
XML-Schemaauflistungen, die an xml-Spalten gebunden sind, werden nicht repliziert.
0x4000000
Repliziert Indizes für xml-Spalten.
0x8000000
Erstellt Schemas, die noch nicht auf dem Abonnenten vorhanden sind.
0x10000000
Konvertiert xml-Spalten auf dem Abonnenten in ntext.
0x20000000
Konvertiert in SQL Server 2005 eingeführte LOB-Datentypen (Large Object) (nvarchar(max), varchar(max) und varbinary(max)) in Datentypen, die in SQL Server 2000 unterstützt werden.
0x40000000
Repliziert Berechtigungen.
0x80000000
Versucht, Abhängigkeiten von Objekten zu löschen, die nicht Teil der Veröffentlichung sind.
0x100000000
Verwenden Sie diese Option, um das FILESTREAM-Attribut zu replizieren, wenn es für varbinary(max)-Spalten angegeben wird. Geben Sie diese Option nicht an, wenn Sie Tabellen auf SQL Server 2005-Abonnenten replizieren. Das Replizieren von Tabellen mit FILESTREAM-Spalten auf SQL Server 2000-Abonnenten wird unabhängig von der Festlegung dieser Schemaoption nicht unterstützt. Siehe die verwandte Option 0x800000000.
0x200000000
Konvertiert in SQL Server 2008 eingeführte Datums- und Zeitdatentypen (date, time, datetimeoffset und datetime2) in Datentypen, die in früheren Versionen von SQL Server unterstützt werden.
0x400000000
Repliziert die Komprimierungsoption für Daten und Indizes. Weitere Informationen finden Sie unter Datenkomprimierung.
0x800000000
Legen Sie diese Option fest, um FILESTREAM-Daten in einer eigenen Dateigruppe auf dem Abonnenten zu speichern. Wenn diese Option nicht festgelegt wird, werden FILESTREAM-Daten in der Standarddateigruppe gespeichert. Bei der Replikation werden keine Dateigruppen erstellt. Daher müssen Sie beim Festlegen dieser Option die Dateigruppe erstellen, bevor Sie die Momentaufnahme auf dem Abonnenten anwenden. Weitere Informationen zum Erstellen von Objekten vor dem Anwenden der Momentaufnahme finden Sie unter Ausführen von Skripts vor und nach dem Anwenden der Momentaufnahme.
Siehe die verwandte Option 0x100000000.
0x1000000000
Konvertiert CLR-benutzerdefinierte Typen (Common Language Runtime User-Defined Type, CLR UDT) in varbinary(max), sodass Spalten vom Typ UDT auf Abonnenten repliziert werden können, auf denen SQL Server 2005 ausgeführt wird.
0x2000000000
Konvertiert den hierarchyid-Datentyp in varbinary(max), sodass Spalten vom Typ hierarchyid auf Abonnenten repliziert werden können, auf denen SQL Server 2005 ausgeführt wird. Weitere Informationen zum Verwenden von hierarchyid-Spalten in replizierten Tabellen finden Sie unter hierarchyid (Transact-SQL).
0x4000000000
Repliziert die gefilterten Indizes in der Tabelle. Weitere Informationen zu gefilterten Indizes finden Sie unter Erstellen gefilterter Indizes.
0x8000000000
Konvertiert den geography-Datentyp und den geometry-Datentyp in varbinary(max), sodass Spalten dieser Typen auf Abonnenten repliziert werden können, auf denen SQL Server 2005 ausgeführt wird.
0x10000000000
Repliziert Indizes für Spalten vom Typ geography und geometry.
Bei einem Wert von NULL generiert das System automatisch eine gültige Schemaoption für den Artikel. Die Tabelle der Standardschemaoptionen im Abschnitt mit Hinweisen zeigt den Wert, der auf Basis des Artikeltyps ausgewählt wird. Außerdem sind nicht alle schema_option-Werte für jeden Replikations- oder Artikeltyp gültig. Die Tabelle gültiger Schemaoptionen in den Hinweisen führt die Optionen aus, die für einen bestimmten Artikeltyp angegeben werden können.
Hinweis
Der schema_option-Parameter hat nur Auswirkungen auf Replikationsoptionen für die Anfangsmomentaufnahme.Nachdem das Anfangsschema vom Momentaufnahme-Agent generiert und auf dem Abonnenten angewendet wurde, tritt die Replikation von Veröffentlichungsschemaänderungen auf dem Abonnenten auf Basis von Replikationsregeln für Schemaänderungen und der Einstellung des replicate_ddl-Parameters auf, die in sp_addmergepublication angegeben wurde.Weitere Informationen finden Sie unter Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken.
[ @subset_filterclause= ] 'subset_filterclause'
Entspricht einer WHERE-Klausel, die die horizontale Filterung eines Tabellenartikels ohne das Wort WHERE angibt. subset_filterclause ist vom Datentyp nvarchar(1000). Der Standardwert ist eine leere Zeichenfolge.Wichtig
Aus Leistungsgründen ist es empfehlenswert, keine Funktionen auf Spaltennamen in Klauseln für parametrisierte Zeilenfilter anzuwenden, wie z. B. LEFT([MyColumn]) = SUSER_SNAME().Wenn Sie HOST_NAME in einer Filterklausel verwenden und den Wert HOST_NAME überschreiben, müssen Sie möglicherweise Datentypen mithilfe von CONVERT konvertieren.Weitere Informationen zu bewährten Methoden für diesen Fall finden Sie im Abschnitt zum Überschreiben des HOST_NAME()-Werts unter Parametrisierte Zeilenfilter.
[ @article_resolver= ] 'article_resolver'
Entspricht dem COM-basierte Konfliktlöser, mit dem Konflikte auf Ebene des Tabellenartikels oder der .NET Framework-Assembly gelöst werden. Diese wird aufgerufen, um eine benutzerdefinierte Geschäftslogik auf Ebene des Tabellenartikels auszuführen. article_resolver ist vom Datentyp varchar(255). Der Standardwert ist NULL. Verfügbare Werte für diesen Parameter sind im Abschnitt zu benutzerdefinierten Konfliktlösern von Microsoft aufgelistet. Wenn der bereitgestellte Wert nicht zu den Konfliktlösern von Microsoft zählt, dann verwendet SQL Server den angegebenen Konfliktlöser anstelle des vom System bereitgestellten Konfliktlösers. sp_enumcustomresolvers listet die verfügbaren benutzerdefinierten Konfliktlöser auf. Weitere Informationen finden Sie unter Ausführen der Geschäftslogik während der Mergesynchronisierung und Erweiterte Konflikterkennung und -lösung bei der Mergereplikation.[ @resolver_info= ] 'resolver_info'
Wird für die Angabe zusätzlicher Informationen verwendet, die für einen benutzerdefinierten Konfliktlöser erforderlich sind. Einige der Microsoft-Konfliktlöser erfordern eine Spalte, die als Eingabe für den Konfliktlöser dient. resolver_info ist vom Datentyp nvarchar(255). Der Standardwert ist NULL. Weitere Informationen finden Sie unter Microsoft COM-basierte Konfliktlöser.[ @source_owner= ] 'source_owner'
Entspricht dem Namen des Eigentümers von source_object. source_owner ist vom Datentyp sysname. Der Standardwert ist NULL. Bei NULL wird der aktuelle Benutzer als Besitzer angenommen.[ @destination_owner= ] 'destination_owner'
Entspricht dem Besitzer des Objekts in der Abonnementdatenbank (sofern nicht "dbo" angegeben ist). destination_owner ist vom Datentyp sysname. Der Standardwert ist NULL. Bei NULL wird dbo als Besitzer angenommen.[ @vertical_partition= ] 'column_filter'
Aktiviert und deaktiviert die Spaltenfilterung für einen Tabellenartikel. vertical_partition ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE.false gibt an, dass keine vertikale Filterung aktiviert ist und alle Spalten veröffentlicht werden.
Bei true werden alle Spalten außer dem deklarierten Primärschlüssel und den ROWGUID-Spalten gelöscht. Spalten werden mithilfe von sp_mergearticlecolumn hinzugefügt.
[ @auto_identity_range= ] 'automatic_identity_range'
Aktiviert und deaktiviert auf Veröffentlichungsebene die automatische Handhabung von Identitätsbereichen für diesen Tabellenartikel zum Zeitpunkt der Veröffentlichungserstellung. auto_identity_range ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. true aktiviert die automatische Handhabung von Identitätsbereichen, während false die Handhabung deaktiviert.Hinweis
auto_identity_range wurde als veraltet markiert und steht nur aus Gründen der Abwärtskompatibilität zur Verfügung.Zur Angabe von Verwaltungsoptionen für Identitätsbereiche sollten Sie identityrangemanagementoption verwenden.Weitere Informationen finden Sie unter Replizieren von Identitätsspalten.
[ @pub_identity_range= ] pub_identity_range
Steuert die Identitätsbereichsgröße, die einem Abonnenten mit einem Serverabonnement zugeordnet ist, wenn die automatische Identitätsbereichsverwaltung verwendet wird. Dieser Identitätsbereich ist für einen Wiederveröffentlichungsabonnenten für die Zuordnung zu dessen Abonnenten reserviert. pub_identity_range ist vom Datentyp bigint. Der Standardwert ist NULL. Sie müssen diesen Parameter angeben, wenn identityrangemanagementoption auf auto oder auto_identity_range auf true festgelegt ist.[ @identity_range= ] identity_range
Steuert die Größe des Identitätsbereichs, die sowohl dem Verleger als auch dem Abonnenten zugeordnet wird, wenn die automatische Identitätsbereichsverwaltung verwendet wird. identity_range ist vom Datentyp bigint. Der Standardwert ist NULL. Sie müssen diesen Parameter angeben, wenn identityrangemanagementoption auf auto oder auto_identity_range auf true festgelegt ist.Hinweis
identity_range steuert die Identitätsbereichsgröße bei Wiederveröffentlichungsabonnenten, die frühere Versionen von SQL Server verwenden.
[ @threshold= ] threshold
Prozentwert, der steuert, wann der Merge-Agent einen neuen Identitätsbereich zuweist. Bei Verwendung des Prozentsatzes der Werte, die in threshold angegeben sind, erstellt der Merge-Agent einen neuen Identitätsbereich. threshold ist vom Datentyp int. Der Standardwert ist NULL. Sie müssen diesen Parameter angeben, wenn identityrangemanagementoption auf auto oder auto_identity_range auf true festgelegt ist.[ @verify_resolver_signature= ] verify_resolver_signature
Gibt an, ob eine digitale Signatur vor dem Verwenden eines Konfliktlösers in der Mergereplikation überprüft wird. verify_resolver_signature ist vom Datentyp int. Der Standardwert ist 1.0 gibt an, dass die Signatur nicht überprüft wird.
1 gibt an, dass die Signatur überprüft wird, um festzustellen, ob sie aus einer vertrauenswürdigen Quelle stammt.
[ @destination_object= ] 'destination_object'
Entspricht dem Namen des Objekts in der Abonnementdatenbank. destination_object ist vom Datentyp sysname. Der Standardwert entspricht dem in @source_object festgelegten Wert. Dieser Parameter kann nur angegeben werden, wenn der Artikel vom Typ schema only ist, wie z. B. ein Artikel für gespeicherte Prozeduren, Sichten und UDFs. Handelt es sich bei dem angegebenen Artikel um einen Tabellenartikel, überschreibt der Wert in @source\_object den Wert in destination_object.[ @allow_interactive_resolver= ] 'allow_interactive_resolver'
Aktiviert oder deaktiviert die Verwendung des interaktiven Konfliktlösers für einen Artikel. allow_interactive_resolver ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. true aktiviert die Verwendung des interaktiven Konfliktlösers für den Artikel. Mit false wird sie deaktiviert.Hinweis
Der interaktive Konfliktlöser wird von SQL Server Compact-Abonnenten nicht unterstützt.
[ @fast_multicol_updateproc= ] 'fast_multicol_updateproc'
Dieser Parameter wurde als veraltet markiert und wird aus Gründen der Abwärtskompatibilität von Skripts beibehalten.[ @check_permissions= ] check_permissions
Ein Bitmuster der Berechtigungen auf Tabellenebene, die überprüft werden, wenn der Merge-Agent die Änderungen auf dem Verleger anwendet. Wenn der vom Mergeprozess verwendete Benutzername bzw. das Benutzerkonto auf dem Verleger nicht über die entsprechenden Tabellenberechtigungen verfügt, werden die ungültigen Änderungen als Konflikte protokolliert. check_permissions ist vom Datentyp int und kann dem Produkt | (bitweises OR) für mindestens einen der folgenden Werte entsprechen.Wert
Beschreibung
0x00 (Standard)
Berechtigungen werden nicht überprüft.
0x10
Überprüft Berechtigungen auf dem Verleger, bevor auf einem Abonnenten ausgeführte Einfügevorgänge hochgeladen werden können.
0x20
Überprüft Berechtigungen auf dem Verleger, bevor auf einem Abonnenten ausgeführte Updatevorgänge hochgeladen werden können.
0x40
Überprüft Berechtigungen auf dem Verleger, bevor auf einem Abonnenten ausgeführte Löschvorgänge hochgeladen werden können.
[ @force_invalidate_snapshot= ] force_invalidate_snapshot
Bestätigt, dass durch die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise eine vorhandene Momentaufnahme ungültig wird. force_invalidate_snapshot ist vom Datentyp bit. Der Standardwert ist 0.Durch 0 wird angegeben, dass die Momentaufnahme nicht durch das Hinzufügen eines Artikels ungültig werden kann. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen eine neue Momentaufnahme erfordern, tritt ein Fehler auf, und es werden keine Änderungen vorgenommen.
1 gibt an, dass durch das Hinzufügen eines Artikels ggf. die Momentaufnahme ungültig wird. Sind Abonnements vorhanden, die eine neue Momentaufnahme erfordern, wird für die vorhandene Momentaufnahme die Berechtigung zur Kennzeichnung als veraltet gewährt, und eine neue Momentaufnahme wird erstellt. force_invalidate_snapshot wird auf 1 festgelegt, wenn ein Artikel einer Veröffentlichung mit einer vorhandenen Momentaufnahme hinzugefügt wird.
[ @published_in_tran_pub= ] 'published_in_tran_pub'
Gibt an, dass ein Artikel in einer Mergeveröffentlichung auch in einer Transaktionsveröffentlichung veröffentlicht wird. published_in_tran_pub ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. true gibt an, dass der Artikel auch in einer Transaktionsveröffentlichung veröffentlicht wird.[ @force_reinit_subscription= ] force_reinit_subscription
Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise das erneute Initialisieren von vorhandenen Abonnements erfordert. force_reinit_subscription ist vom Datentyp bit. Der Standardwert ist 0.Durch 0 wird angegeben, dass das Abonnement nicht durch das Hinzufügen eines Artikels erneut initialisiert werden kann. Wenn die gespeicherte Prozedur erkennt, dass die Änderung die erneute Initialisierung von vorhandenen Abonnements erfordert, tritt ein Fehler auf, und es werden keine Änderungen durchgeführt.
1 bedeutet, dass Änderungen am Mergeartikel eine erneute Initialisierung vorhandener Abonnements bewirken. Zudem wird die Berechtigung zum Auslösen der erneuten Abonnementinitialisierung erteilt. force_reinit_subscription wird auf 1 festgelegt, wenn subset_filterclause einen parametrisierten Zeilenfilter angibt.
[ @logical_record_level_conflict_detection= ] 'logical_record_level_conflict_detection'
Gibt die Ebene der Konflikterkennung für einen Artikel an, der das Element eines logischen Datensatzes ist. logical_record_level_conflict_detection ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE.true gibt an, dass ein Konflikt erkannt wird, wenn an einer beliebigen Stelle im logischen Datensatz Änderungen vorgenommen werden.
false gibt an, dass die Standardkonflikterkennung verwendet wird, die durch column_tracking angegeben wird. Weitere Informationen finden Sie unter Gruppieren von Änderungen an verknüpften Zeilen mithilfe von logischen Datensätzen.
Hinweis
Da logische Datensätze von SQL Server Compact-Abonnenten nicht unterstützt werden, müssen Sie den Wert false für logical_record_level_conflict_detection angeben, um diese Abonnenten zu unterstützen.
[ @logical_record_level_conflict_resolution= ] 'logical_record_level_conflict_resolution'
Gibt die Ebene der Konfliktlösung für einen Artikel an, der das Element eines logischen Datensatzes ist. logical_record_level_conflict_resolution ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE.true gibt an, dass der gesamte gewinnende logische Datensatz den verlierenden logischen Datensatz überschreibt.
false gibt an, dass Gewinnerzeilen nicht auf den logischen Datensatz eingeschränkt sind. Wenn logical_record_level_conflict_detection den Wert true besitzt, muss logical_record_level_conflict_resolution ebenfalls auf true festgelegt werden. Weitere Informationen finden Sie unter Gruppieren von Änderungen an verknüpften Zeilen mithilfe von logischen Datensätzen.
Hinweis
Da logische Datensätze von SQL Server Compact-Abonnenten nicht unterstützt werden, müssen Sie den Wert false für logical_record_level_conflict_resolution angeben, um diese Abonnenten zu unterstützen.
[ @partition_options= ] partition_options
Definiert die Art und Weise, wie Daten im Artikel partitioniert werden. Dies ermöglicht Leistungsoptimierungen, wenn alle Zeilen nur zu einer einzigen Partition oder zu einem einzigen Abonnement gehören. partition_options ist vom Datentyp tinyint. Die folgenden Werte sind möglich:Wert
Beschreibung
0 (Standard)
Das Filtern für den Artikel ist entweder statisch oder ergibt keine eindeutige Untermenge von Daten für jede Partition, d. h. eine "überlappende" Partition.
1
Die Partitionen überlappen, und beim Abonnenten vorgenommene Updates der Datenbearbeitungssprache (DML, Data Manipulation Language) können nicht die Partition ändern, zu der eine Zeile gehört.
2
Das Filtern für den Artikel ergibt nicht überlappende Partitionen. Mehrere Abonnenten können jedoch die gleiche Partition erhalten.
3
Das Filtern für den Artikel ergibt nicht überlappende Partitionen, die für jedes Abonnement eindeutig sind.
Hinweis
Wenn die Quelltabelle eines Artikels bereits in einer anderen Veröffentlichung veröffentlicht wurde, muss der Wert von partition_options für beide Artikel gleich sein.
[ @processing_order= ] processing_order
Gibt die Verarbeitungsreihenfolge von Artikeln in einer Mergeveröffentlichung an. processing_order ist vom Datentyp int. Der Standardwert ist 0. 0 gibt an, dass der Artikel ungeordnet ist, und jeder andere Wert stellt den Ordnungswert der Verarbeitungsreihenfolge für diesen Artikel dar. Artikel werden in der Reihenfolge vom niedrigsten zum höchsten Wert verarbeitet. Wenn zwei Artikel den gleichen Wert besitzen, wird die Verarbeitungsreihenfolge durch die Reihenfolge des Artikelspitznamens in der sysmergearticles-Systemtabelle bestimmt. Weitere Informationen finden Sie unter Angeben der Verarbeitungsreihenfolge von Mergeartikeln.[ @subscriber_upload_options= ] subscriber_upload_options
Definiert Einschränkungen für Updates, die bei einem Abonnenten mit einem Clientabonnement vorgenommen werden. Weitere Informationen finden Sie unter Optimieren der Leistung der Mergereplikation durch nur herunterladbare Artikel. subscriber_upload_options ist vom Datentyp tinyint. Die folgenden Werte sind möglich:Wert
Beschreibung
0 (Standard)
Keine Einschränkungen. Auf dem Abonnenten vorgenommene Änderungen werden auf den Verleger hochgeladen.
1
Änderungen sind auf dem Abonnenten zulässig, werden jedoch nicht auf den Verleger hochgeladen.
2
Änderungen sind auf dem Abonnenten nicht zulässig.
Die Änderung von subscriber_upload_options erfordert, dass das Abonnement erneut initialisiert wird, indem sp_reinitmergepullsubscription (Transact-SQL) aufgerufen wird.
Hinweis
Wenn die Quelltabelle eines Artikels bereits in einer anderen Veröffentlichung veröffentlicht wurde, muss der Wert von subscriber_upload_options für beide Artikel gleich sein.
[ @identityrangemanagementoption= ] identityrangemanagementoption
Gibt an, wie die Identitätsbereichsverwaltung für den Artikel gehandhabt wird. identityrangemanagementoption ist vom Datentyp nvarchar(10). Die folgenden Werte sind möglich:Wert
Beschreibung
Keiner
Deaktiviert die Verwaltung des Identitätsbereichs.
manual
Kennzeichnet die Identitätsspalte mithilfe von NOT FOR REPLICATION, um die manuelle Behandlung des Identitätsbereichs zu aktivieren.
auto
Gibt die automatische Verwaltung von Identitätsbereichen an.
NULL (Standard)
Der Standardwert ist none, wenn der Wert von auto_identity_range nicht true ist.
Wenn der Wert von identityrangemanagementoption NULL ist, wird der Wert von auto_identity_range aus Gründen der Abwärtskompatibilität überprüft. Wenn der Wert von identityrangemanagementoption jedoch nicht NULL ist, wird der Wert von auto_identity_range ignoriert. Weitere Informationen finden Sie unter Replizieren von Identitätsspalten.
[ @delete_tracking= ] 'delete_tracking'
Gibt an, ob Löschungen repliziert werden. delete_tracking ist ein Wert vom Datentyp nvarchar(5). Der Standardwert ist TRUE. false gibt an, dass Löschungen nicht repliziert werden, und true gibt an, dass Löschungen zu replizieren sind. Dies ist das übliche Verhalten für die Mergereplikation. Wenn delete_tracking auf false festgelegt ist, müssen auf dem Abonnenten gelöschte Zeilen auf dem Verleger manuell entfernt werden, und auf dem Verleger gelöschte Zeilen müssen auf dem Abonnenten manuell entfernt werden.Wichtig
Das Festlegen von delete_tracking auf false führt zu einer Nichtkonvergenz.Wenn die Quelltabelle eines Artikels bereits in einer anderen Veröffentlichung veröffentlicht wurde, muss der Wert von delete_tracking für beide Artikel gleich sein.
Hinweis
delete_tracking-Optionen können nicht mithilfe der Dialogfelder Assistent für neue Veröffentlichung oder Veröffentlichungseigenschaften festgelegt werden.
[ @compensate_for_errors= ] 'compensate_for_errors'
Zeigt an, ob kompensierende Aktionen ausgeführt werden, wenn während der Synchronisierung Fehler auftreten. compensate_for_errors ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Bei Festlegung auf true führen Änderungen, die auf Abonnenten- oder Verlegerebene während der Synchronisierung nicht übernommen werden können, immer zu kompensierenden Aktionen, um die jeweilige Änderung rückgängig zu machen. Allerdings kann ein falsch konfigurierter Abonnent, der einen Fehler generiert, Änderungen bei anderen Abonnenten und Verlegern bewirken, die rückgängig zu machen sind. false deaktiviert diese kompensierenden Aktionen. Die Fehler werden dennoch protokolliert, da mit der Kompensierung und den nachfolgenden Mergevorgängen weiterhin versucht wird, die Änderungen zu übernehmen, bis dies erfolgreich ist.Wichtig
Möglicherweise hat es den Anschein, dass Daten in den betroffenen Zeilen nicht konvergent sind. Beheben Sie jedoch ggf. aufgetretene Fehler, können Änderungen übernommen werden, und die Daten konvergieren.Wenn die Quelltabelle eines Artikels bereits in einer anderen Veröffentlichung veröffentlicht wurde, muss der Wert von compensate_for_errors für beide Artikel gleich sein.
[ @stream_blob_columns= ] 'stream_blob_columns'
Gibt an, dass eine Datenstromoptimierung bei der Replikation von Binary Large Object-Spalten verwendet wird. stream_blob_columns ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. true bedeutet, dass die Optimierung versucht wird. stream_blob_columns ist auf "true" festgelegt, wenn FILESTREAM aktiviert ist. Dadurch werden die Replikation der FILESTREAM-Daten optimal ausgeführt und die Arbeitsspeicherauslastung reduziert. Um FILESTREAM-Tabellenartikel zu zwingen, kein BLOB-Streaming zu verwenden, verwenden Sie sp_changemergearticle, damit stream_blob_columns auf "false" festgelegt wird.Wichtig
Durch Aktivieren dieser Arbeitsspeicheroptimierung kann die Leistung des Merge-Agents bei der Synchronisierung beeinträchtigt werden.Die Option sollte nur verwendet werden, wenn Spalten mit Megabytes von Daten repliziert werden.
Hinweis
Bestimmte Funktionen der Mergereplikation, z. B. logische Datensätze, können selbst dann noch verhindern, dass die Datenstromoptimierung beim Replizieren von BLOB-Daten verwendet wird, wenn stream_blob_columns auf true festgelegt ist.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
sp_addmergearticle wird bei der Mergereplikation verwendet.
Wenn Sie Objekte veröffentlichen, werden ihre Definitionen auf Abonnenten kopiert. Wenn Sie ein Datenbankobjekt veröffentlichen, das von mindestens einem anderen Objekt abhängig ist, müssen Sie alle Objekte veröffentlichen, auf die verwiesen wird. Wenn Sie z. B. eine Sicht veröffentlichen, die von einer Tabelle abhängig ist, müssen Sie auch die Tabelle veröffentlichen.
Wenn Sie den Wert 3 für partition_options angeben, kann sich im jeweiligen Artikel nur ein Abonnement für jede Datenpartition befinden. Wird ein zweites Abonnement erstellt, in dem das Filterkriterium des neuen Abonnements die gleiche Partition ergibt wie das vorhandene Abonnement, wird das vorhandene Abonnement gelöscht.
Wird für partition_options ein Wert von 3 angegeben, werden die Metadaten jedes Mal bereinigt, wenn der Merge-Agent ausgeführt wird, und die partitionierte Momentaufnahme läuft schneller ab. Beim Verwenden dieser Option sollten Sie in Erwägung ziehen, vom Abonnenten angeforderte partitionierte Momentaufnahmen zu aktivieren. Weitere Informationen finden Sie unter Momentaufnahmen für Mergeveröffentlichungen mit parametrisierten Filtern.
Beim Hinzufügen eines Artikels mit einem statischen horizontalen Filter mithilfe von subset_filterclause zu einer vorhandenen Veröffentlichung mit Artikeln, die über parametrisierte Filter verfügen, ist es erforderlich, die Abonnements erneut zu initialisieren.
Beim Angeben von processing_order ist es empfehlenswert, zwischen den Werten für die Artikelreihenfolge Lücken zu lassen. Dies vereinfacht das Festlegen neuer Werte in der Zukunft. Wenn Sie z. B. über die drei Artikel Article1, Article2 und Article3 verfügen, legen Sie processing_order auf 10, 20 und 30 statt auf 1, 2 und 3 fest. Weitere Informationen finden Sie unter Angeben der Verarbeitungsreihenfolge von Mergeartikeln.
Tabelle der Standardschemaoptionen
In dieser Tabelle wird der Standardwert beschrieben, der von der gespeicherten Prozedur festgelegt wird, wenn ein NULL-Wert für schema_option angegeben wird. Dies ist vom Artikeltyp abhängig.
Artikeltyp |
Schemaoptionswert |
---|---|
func schema only |
0x01 |
indexed view schema only |
0x01 |
proc schema only |
0x01 |
table |
|
view schema only |
0x01 |
Hinweis
Wenn die Veröffentlichung frühere Versionen von SQL Server unterstützt, hat die Standardschemaoption für table den Wert 0x30034FF1.
Tabelle gültiger Schemaoptionen
In der folgenden Tabelle sind die zulässigen Werte von schema_option je nach Artikeltyp beschrieben.
Artikeltyp |
Schemaoptionswerte |
---|---|
func schema only |
0x01 und 0x2000 |
indexed view schema only |
0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 und 0x200000 |
proc schema only |
0x01 und 0x2000 |
table |
Alle Optionen |
view schema only |
0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 und 0x200000 |
Beispiel
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';
-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_object = @table1,
@type = N'table',
@source_owner = @hrschema,
@schema_option = 0x0004CF1,
@description = N'article for the Employee table',
@subset_filterclause = @filterclause;
-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_object = @table2,
@type = N'table',
@source_owner = @salesschema,
@vertical_partition = N'true',
@schema_option = 0x0034EF1,
@description = N'article for the SalesOrderDetail table';
-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table3,
@source_object = @table3,
@source_owner = @salesschema,
@description = 'article for the SalesOrderHeader table',
@identityrangemanagementoption = N'auto',
@pub_identity_range = 100000,
@identity_range = 100,
@threshold = 80,
@schema_option = 0x0004EF1;
-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@column = N'CreditCardApprovalCode',
@operation = N'drop',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table2,
@filtername = N'SalesOrderHeader_Employee',
@join_articlename = @table1,
@join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table3,
@filtername = N'SalesOrderDetail_SalesOrderHeader',
@join_articlename = @table2,
@join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Berechtigungen
Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner.
Siehe auch
Verweis
sp_changemergearticle (Transact-SQL)
sp_dropmergearticle (Transact-SQL)
sp_helpmergearticle (Transact-SQL)
Gespeicherte Replikationsprozeduren (Transact-SQL)