sp_addmergearticle (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Fügt einer vorhandenen Mergeveröffentlichung einen Artikel hinzu. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

sp_addmergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    , [ @source_object = ] N'source_object'
    [ , [ @type = ] N'type' ]
    [ , [ @description = ] N'description' ]
    [ , [ @column_tracking = ] N'column_tracking' ]
    [ , [ @status = ] N'status' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @subset_filterclause = ] N'subset_filterclause' ]
    [ , [ @article_resolver = ] N'article_resolver' ]
    [ , [ @resolver_info = ] N'resolver_info' ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @auto_identity_range = ] N'auto_identity_range' ]
    [ , [ @pub_identity_range = ] pub_identity_range ]
    [ , [ @identity_range = ] identity_range ]
    [ , [ @threshold = ] threshold ]
    [ , [ @verify_resolver_signature = ] verify_resolver_signature ]
    [ , [ @destination_object = ] N'destination_object' ]
    [ , [ @allow_interactive_resolver = ] N'allow_interactive_resolver' ]
    [ , [ @fast_multicol_updateproc = ] N'fast_multicol_updateproc' ]
    [ , [ @check_permissions = ] check_permissions ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @published_in_tran_pub = ] N'published_in_tran_pub' ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection' ]
    [ , [ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution' ]
    [ , [ @partition_options = ] partition_options ]
    [ , [ @processing_order = ] processing_order ]
    [ , [ @subscriber_upload_options = ] subscriber_upload_options ]
    [ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
    [ , [ @delete_tracking = ] N'delete_tracking' ]
    [ , [ @compensate_for_errors = ] N'compensate_for_errors' ]
    [ , [ @stream_blob_columns = ] N'stream_blob_columns' ]
[ ; ]

Argumente

[ @publication = ] N'Publikation'

Der Name der Publikation, die den Artikel enthält. @publication ist "sysname" ohne Standard.

[ @article = ] N'article'

Der Name des Artikels. Der Name muss innerhalb der Veröffentlichung eindeutig sein. @article ist "sysname" ohne Standard. @article muss sich auf dem lokalen Computer befinden, auf dem SQL Server ausgeführt wird, und muss den Regeln für Bezeichner entsprechen.

[ @source_object = ] N'source_object'

Das datenbankobjekt, das veröffentlicht werden soll. @source_object ist "sysname" ohne Standard. Weitere Informationen zu den Objekttypen, die mithilfe der Seriendruckreplikation veröffentlicht werden können, finden Sie unter Veröffentlichen von Daten und Datenbankobjekten.

[ @type = ] N'type'

Der Typ des Artikels. @type ist "sysname" mit einem Standardwert von table" und kann einer der folgenden Werte sein:

Wert Beschreibung
table (Standardwert) Tabelle mit Schema und Daten. Die Replikation überwacht die Tabelle, um die zu replizierenden Daten zu ermitteln.
func schema only Funktion vom Typ schema only.
indexed view schema only Indizierte Sicht vom Typ schema only.
proc schema only Nur gespeicherte Prozedur mit Schema
synonym schema only Nur Synonym mit Schema
view schema only Sicht vom Typ schema only.

[ @description = ] N'description'

Eine Beschreibung des Artikels. @description ist nvarchar(255), mit einem Standardwert von NULL.

[ @column_tracking = ] N'column_tracking'

Die Einstellung für die Nachverfolgung auf Spaltenebene. @column_tracking ist nvarchar(10), wobei die Standardeinstellung istfalse. false aktiviert die Spaltennachverfolgung. false deaktiviert die Spaltennachverfolgung und lässt die Konflikterkennung auf Zeilenebene zurück. 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

Falls die Zeilennachverfolgung zur Konflikterkennung verwendet wird (Standardeinstellung), kann die Basistabelle maximal 1.024 Spalten enthalten. Die Spalten müssen jedoch im Artikel gefiltert werden, sodass maximal 246 Spalten veröffentlicht werden. Wenn Spaltennachverfolgung verwendet wird, kann die Basistabelle maximal 246 Spalten enthalten.

[ @status = ] N'status'

Der Status des Artikels. @status ist nvarchar(10), wobei die Standardeinstellung istunsynced. Wenn activedas anfängliche Verarbeitungsskript zum Veröffentlichen der Tabelle ausgeführt wird. Wenn unsynceddas anfängliche Verarbeitungsskript zum Veröffentlichen der Tabelle beim nächsten Ausführen der Momentaufnahmen-Agent ausgeführt wird.

[ @pre_creation_cmd = ] N'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 nvarchar(10) und kann einen der folgenden Werte aufweisen.

Wert Beschreibung
none 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, um SQL Server Compact-Abonnenten zu unterstützen.
truncate Schneidet die Zieltabelle ab.

[ @creation_script = ] N'creation_script'

Der Pfad und der Name eines optionalen Artikelschemaskripts, das zum Erstellen des Artikels in der Abonnementdatenbank verwendet wird. @creation_script ist nvarchar(255), mit einem Standardwert von NULL.

Hinweis

Erstellungsskripts werden nicht für SQL Server Compact-Abonnenten ausgeführt.

[ @schema_option = ] schema_option

Eine Bitmap der Schemagenerierungsoption für den angegebenen Artikel. @schema_option ist varbinary(8) und kann das | sein. (Bitweise ODER) Produkt eines oder mehrerer dieser Werte.

Wert Beschreibung
0x00 Deaktiviert die Skripterstellung durch die Momentaufnahmen-Agent und verwendet das bereitgestellte Schemavorerstellungsskript, das in @creation_script definiert ist.
0x01 Generiert die Objekterstellung (CREATE TABLE, CREATE PROCEDUREusw.). 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 im Zusammenhang mit Primärschlüsseln und UNIQUE Einschränkungen generiert, wenn sie bereits in einer veröffentlichten Tabelle 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 eine berechnete Spalte auf eine UDT-Spalte verweist.
0x40 Generiert entsprechende nicht gruppierte Indizes. Auch wenn diese Option nicht festgelegt ist, werden Indizes im Zusammenhang mit Primärschlüsseln und UNIQUE Einschränkungen generiert, wenn sie bereits in einer veröffentlichten Tabelle definiert sind.
0x80 PRIMARY KEY Repliziert Einschränkungen. Alle Indizes im Zusammenhang mit der Einschränkung werden ebenfalls repliziert, auch wenn Optionen 0x100x40 und nicht aktiviert sind.
0x100 Repliziert Benutzertrigger für einen Tabellenartikel, wenn definiert.
0x200 FOREIGN KEY Repliziert Einschränkungen. Wenn die referenzierte Tabelle nicht Teil einer Publikation ist, werden alle FOREIGN KEY Einschränkungen für eine veröffentlichte Tabelle nicht repliziert.
0x400 CHECK Repliziert 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 UNIQUE Repliziert Einschränkungen. Alle Indizes im Zusammenhang mit der Einschränkung werden ebenfalls repliziert, auch wenn Optionen 0x100x40 und nicht aktiviert sind.
0x8000 Diese Option ist nicht gültig für Herausgeber, die SQL Server 2005 (9.x) und höhere Versionen ausführen.
0x10000 CHECK Repliziert Einschränkungen, NOT FOR REPLICATION sodass die Einschränkungen während der Synchronisierung nicht erzwungen werden.
0x20000 FOREIGN KEY Repliziert Einschränkungen, NOT FOR REPLICATION sodass die Einschränkungen während 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 in XML-Spalten .
0x8000000 Erstellt Schemas, die noch nicht auf dem Abonnenten vorhanden sind.
0x10000000 Konvertiert XML-Spalten in "ntext" für den Abonnenten.
0x20000000 Konvertiert große Objektdatentypen (nvarchar(max), varchar(max) und varbinary(max)), die in SQL Server 2005 (9.x) eingeführt wurden, in Datentypen, die in SQL Server 2000 (8.x) unterstützt werden.
0x40000000 Repliziert Berechtigungen.
0x80000000 Versucht, Abhängigkeiten von Objekten abzulegen, die nicht Teil der Publikation sind.
0x100000000 Verwenden Sie diese Option, um das FILESTREAM Attribut zu replizieren, wenn es in varbinary(max) -Spalten angegeben ist. Geben Sie diese Option nicht an, wenn Sie Tabellen in SQL Server 2005 (9.x)-Abonnenten replizieren. Das Replizieren von Tabellen mit FILESTREAM-Spalten auf SQL Server 2000 (8.x) Abonnenten wird unabhängig davon, wie diese Schemaoption festgelegt wird, nicht unterstützt. Siehe verwandte Option 0x800000000.
0x200000000 Konvertiert Datums- und Uhrzeitdatentypen (Datum, Uhrzeit, Datetimeoffset und Datetime2), die in SQL Server 2008 (10.0.x) eingeführt wurden, 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 ist, werden FILESTREAM-Daten in der Standarddateigruppe gespeichert. Die Replikation erstellt keine Dateigruppen; Wenn Sie diese Option festlegen, müssen Sie daher die Dateigruppe erstellen, bevor Sie die Momentaufnahme beim Abonnenten anwenden. Weitere Informationen zum Erstellen von Objekten, bevor Sie die Momentaufnahme anwenden, finden Sie unter Execute Scripts Before and After the Snapshot Is Applied.

Siehe verwandte Option 0x100000000.
0x1000000000 Wandelt benutzerdefinierte Typen (Common Language Runtime, CLR) in varbinary(max) um, sodass Spalten vom Typ UDT in Abonnenten repliziert werden können, die SQL Server 2005 (9.x) ausführen.
0x2000000000 Wandelt den hierarchyid-Datentyp in varbinary(max) um, sodass Spalten der Typhierarchie-ID in Abonnenten repliziert werden können, die SQL Server 2005 (9.x) ausführen. Weitere Informationen zur Verwendung von Hierarchie-ID-Spalten in replizierten Tabellen finden Sie in der Referenz zur Hierarchie-Datentypmethode.
0x4000000000 Repliziert die gefilterten Indizes in der Tabelle. Weitere Informationen zu gefilterten Indizes finden Sie unter Erstellen gefilterter Indizes.
0x8000000000 Wandelt die Geografie - und Geometriedatentypen in varbinary(max) um, sodass Spalten dieser Typen in Abonnenten repliziert werden können, die SQL Server 2005 (9.x) ausführen.
0x10000000000 Repliziert Indizes für Spalten vom Typ "Geografie " und "Geometrie".

Wenn dieser Wert lautet NULL, generiert das System automatisch eine gültige Schemaoption für den Artikel. Die Standardschemaoptionstabelle zeigt den Wert an, der basierend auf dem Artikeltyp ausgewählt wird. Außerdem sind nicht alle @schema_option Werte für jeden Replikations- und Artikeltyp gültig. Die Tabelle "Gültige Schemaoption" zeigt die Optionen an, die für einen bestimmten Artikeltyp angegeben werden können.

Hinweis

Der parameter @schema_option wirkt sich nur auf Replikationsoptionen für die anfängliche Momentaufnahme aus. Sobald das anfängliche Schema von der Momentaufnahmen-Agent generiert und auf den Abonnenten angewendet wurde, treten die Replikation von Publikationsschemaänderungen am Abonnenten basierend auf Schemaänderungsreplikationsregeln und der in sp_addmergepublication angegebenen @replicate_ddl Parametereinstellung auf. Weitere Informationen finden Sie unter Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken.

[ @subset_filterclause = ] N'subset_filterclause'

Eine WHERE-Klausel, die die horizontale Filterung eines Tabellenartikels ohne das Wort WHERE angibt. @subset_filterclause ist nvarchar(1000), wobei standardmäßig eine leere Zeichenfolge vorhanden ist.

Wichtig

Aus Leistungsgründen wird empfohlen, keine Funktionen auf Spaltennamen in parametrisierten Zeilenfilterklauseln anzuwenden, z LEFT([MyColumn]) = SUSER_SNAME(). B. . Wenn Sie HOST_NAME in einer Filterklausel verwenden und den HOST_NAME Wert außer Kraft setzen, müssen Sie möglicherweise Datentypen mithilfe von CONVERT konvertieren. Weitere Informationen zu bewährten Methoden für diesen Fall finden Sie im Abschnitt "Überschreiben des HOST_NAME()-Werts" in parametrisierten Filtern – Parametrisierte Zeilenfilter.

[ @article_resolver = ] N'article_resolver'

Der COM-basierte Resolver zum Beheben von Konflikten im Tabellenartikel oder der .NET Framework-Assembly, die aufgerufen wird, um benutzerdefinierte Geschäftslogik im Tabellenartikel auszuführen. @article_resolver ist nvarchar(255), mit einem Standardwert von NULL. Verfügbare Werte für diesen Parameter werden in Microsoft Custom Resolvers aufgeführt. Wenn der bereitgestellte Wert keins der Microsoft-Resolver ist, verwendet SQL Server den angegebenen Resolver anstelle des vom System bereitgestellten Resolvers. Dient sp_enumcustomresolvers zum Aufzählen der Liste der verfügbaren benutzerdefinierten Resolver. Weitere Informationen finden Sie unter Ausführen der Geschäftslogik während der Zusammenführungssynchronisierung und der erweiterten Seriendruckreplikation – Konflikterkennung und -lösung.

[ @resolver_info = ] N'resolver_info'

Wird verwendet, um zusätzliche Informationen anzugeben, die von einem benutzerdefinierten Resolver benötigt werden. Einige der Microsoft Resolvers erfordern eine Spalte, die als Eingabe für den Resolver bereitgestellt wird. @resolver_info ist nvarchar(517), mit einem Standardwert von NULL. Weitere Informationen finden Sie unter Advanced Merge Replication Conflict – COM-basierte Resolver.

[ @source_owner = ] N'source_owner'

Der Name des Besitzers der @source_object. @source_owner ist "sysname" mit einem Standardwert von NULL. Wenn NULLder aktuelle Benutzer als Besitzer angenommen wird.

[ @destination_owner = ] N'destination_owner'

Der Besitzer des Objekts in der Abonnementdatenbank, wenn nicht dbo. @destination_owner ist "sysname" mit einem Standardwert von NULL. Wenn NULL, dbo wird als Besitzer angenommen.

[ @vertical_partition = ] N'vertical_partition'

Aktiviert und deaktiviert die Spaltenfilterung für einen Tabellenartikel. @vertical_partition ist nvarchar(5), mit einem Standardwert von false.

  • false gibt an, dass keine vertikale Filterung vorhanden ist und alle Spalten veröffentlicht werden.

  • false löscht alle Spalten mit Ausnahme des deklarierten Primärschlüssels und ROWGUID der deklarierten Spalten. Spalten werden mithilfe von sp_mergearticlecolumn.

[ @auto_identity_range = ] N'auto_identity_range'

Aktiviert und deaktiviert die automatische Behandlung von Identitätsbereichs für diesen Tabellenartikel zu einer Publikation zum Zeitpunkt der Erstellung. @auto_identity_range ist nvarchar(5) mit einem Standardwert von NULL. false aktiviert die automatische Behandlung von Identitätsbereichs, während false sie deaktiviert wird.

Hinweis

Dieser Parameter ist veraltet und wird zur Abwärtskompatibilität von Skripts Standard beibehalten. Sie sollten @identityrangemanagementoption zum Angeben von Identitätsbereichsverwaltungsoptionen 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 großint, mit einem Standardwert von NULL. Sie müssen diesen Parameter angeben, wenn @identityrangemanagementoption ist auto oder wenn @auto_identity_range ist false.

[ @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 großint, mit einem Standardwert von NULL. Sie müssen diesen Parameter angeben, wenn @identityrangemanagementoption ist auto oder wenn @auto_identity_range ist false.

Hinweis

@identity_range steuert die Größe des Identitätsbereichs bei der erneuten Veröffentlichung von Abonnenten mit früheren Versionen von SQL Server.

[ @threshold = ] Schwellenwert

Prozentwert, der steuert, wann der Merge-Agent einen neuen Identitätsbereich zuweist. Wenn der prozentsatz der in @threshold angegebenen Werte verwendet wird, erstellt die Merge-Agent einen neuen Identitätsbereich. @threshold ist int, mit einem Standardwert von NULL. Sie müssen diesen Parameter angeben, wenn @identityrangemanagementoption ist auto oder wenn @auto_identity_range ist false.

[ @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 int, mit einem Standardwert von 1.

  • 0 Gibt an, dass die Signatur nicht überprüft wird.

  • 1 Gibt an, dass die Signatur überprüft wird, um festzustellen, ob sie von einer vertrauenswürdigen Quelle stammt.

[ @destination_object = ] N'destination_object'

Der Name des Objekts in der Abonnementdatenbank. @destination_object ist "sysname" mit dem Standardwert, der in @source_object enthalten ist. 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. Wenn der angegebene Artikel ein Tabellenartikel ist, überschreibt der Wert in @source_object den Wert in @destination_object.

[ @allow_interactive_resolver = ] N'allow_interactive_resolver'

Aktiviert oder deaktiviert die Verwendung des interaktiven Konfliktlösers für einen Artikel. @allow_interactive_resolver ist nvarchar(5), mit einem Standardwert von false. false ermöglicht die Verwendung des interaktiven Resolvers für den Artikel; false deaktiviert sie.

Hinweis

Interactive Resolver wird von SQL Server Compact-Abonnenten nicht unterstützt.

[ @fast_multicol_updateproc = ] N'fast_multicol_updateproc'

Dieser Parameter ist veraltet und wird zur Abwärtskompatibilität von Skripts Standard beibehalten.

[ @check_permissions = ] check_permissions

Eine Bitmap der Berechtigungen auf Tabellenebene, die überprüft werden, wenn die Merge-Agent Änderungen an Publisher anwendet. Wenn das vom Zusammenführungsprozess verwendete Publisher-Anmelde-/Benutzerkonto nicht über die richtigen Tabellenberechtigungen verfügt, werden die ungültigen Änderungen als Konflikte protokolliert. @check_permissions ist int und kann das | sein (Bitweise ODER) produkt of one or more of the following values.

Wert Beschreibung
0x00 (Standardwert) 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_Momentaufnahme

Erkennt an, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise eine vorhandene Momentaufnahme ungültig macht. @force_invalidate_Momentaufnahme ist bit, mit einem Standardwert von 0.

  • 0Gibt an, dass das Hinzufügen eines Artikels dazu führt, dass die Momentaufnahme ungültig ist. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen eine neue Momentaufnahme erfordern, tritt ein Fehler auf und es werden keine Änderungen vorgenommen.

  • 1Gibt an, dass das Hinzufügen eines Artikels dazu führen kann, dass die Momentaufnahme ungültig ist, und wenn vorhandene Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern, erteilen Sie die Berechtigung, dass die vorhandenen Momentaufnahme als veraltet gekennzeichnet werden und eine neue Momentaufnahme generiert wird. @force_invalidate_Momentaufnahme wird beim Hinzufügen eines Artikels zu einer Publikation mit einer vorhandenen Momentaufnahme festgelegt1.

[ @published_in_tran_pub = ] N'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 nvarchar(5), mit einem Standardwert von false. false 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 bit, mit einem Standardwert von 0.

  • 0 Gibt an, dass das Hinzufügen eines Artikels nicht dazu führt, dass das Abonnement erneut initialisiert wird. Wenn die gespeicherte Prozedur erkennt, dass die Änderung vorhandene Abonnements erneut initialisiert werden muss, tritt ein Fehler auf, und es werden keine Änderungen vorgenommen.

  • 1 bedeutet, dass Änderungen am Seriendruckartikel dazu führen, dass vorhandene Abonnements erneut initialisiert werden und die Berechtigung für die Erneute Initialisierung des Abonnements erteilt werden. @force_reinit_subscription wird festgelegt1, wenn @subset_filterclause einen parametrisierten Zeilenfilter angibt.

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

Hinweis

Da logische Datensätze von SQL Server Compact-Abonnenten nicht unterstützt werden, müssen Sie einen Wert false für @logical_record_level_conflict_detection angeben, um diese Abonnenten zu unterstützen.

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

  • false Gibt an, dass der gesamte gewinnende logische Datensatz den verlorenen logischen Datensatz überschreibt.

  • false Gibt an, dass gewinnbringende Zeilen nicht auf den logischen Datensatz beschränkt sind.

Wenn @logical_record_level_conflict_detection ist false, muss @logical_record_level_conflict_resolution auch auf false. 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 einen 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 winzig und kann einer der folgenden Werte sein.

Wert Beschreibung
0 (Standardwert) Die Filterung für den Artikel ist entweder statisch oder liefert keine eindeutige Teilmenge von Daten für jede Partition, d. h. eine "überlappende" Partition.
1 Die Partitionen sind überlappend, und DML-Aktualisierungen (Data Manipulation Language), die am Abonnenten vorgenommen werden, können die Partition, zu der eine Zeile gehört, nicht ändern.
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 für einen Artikel bereits in einer anderen Publikation veröffentlicht wird, 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 int, mit einem Standardwert von 0. 0 Gibt an, dass der Artikel ungeordnet ist und jeder andere Wert den Ordnungswert der Verarbeitungsreihenfolge für diesen Artikel darstellt. Artikel werden in der Reihenfolge vom niedrigsten zum höchsten Wert verarbeitet. Wenn zwei Artikel denselben Wert haben, wird die Verarbeitungsreihenfolge durch die Reihenfolge des Artikelspitznamens in der Systemtabelle sysmergearticles bestimmt. Weitere Informationen finden Sie unter Specify Merge Replication properties (Angeben von Mergereplikationseigenschaften).

[ @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 winzig und kann einer der folgenden Werte sein.

Wert Beschreibung
0 (Standardwert) Keine Einschränkungen. Auf dem Abonnenten vorgenommene Änderungen werden auf den Verleger hochgeladen.
1 Änderungen sind beim Abonnenten zulässig, werden jedoch nicht in den Publisher hochgeladen.
2 Änderungen sind beim Abonnenten nicht zulässig.

Das Ändern @subscriber_upload_options erfordert, dass das Abonnement erneut initialisiert wird, indem sp_reinitmergepullsubscription (Transact-SQL) aufgerufen wird.

Hinweis

Wenn die Quelltabelle für einen Artikel bereits in einer anderen Veröffentlichung veröffentlicht wurde, muss für @compensate_for_errors für beide Artikel der gleiche Wert angegeben werden.

[ @identityrangemanagementoption = ] N'identityrangemanagementoption'

Gibt an, wie die Identitätsbereichsverwaltung für den Artikel gehandhabt wird. @identityrangemanagementoption ist nvarchar(10) und kann einen der folgenden Werte aufweisen.

Wert Beschreibung
none Deaktiviert die Verwaltung des Identitätsbereichs.
manual Markiert die Identitätsspalte mithilfe von NOT FOR REPLICATION, um die manuelle Identitätsbereichsverwaltung zu ermöglichen.
auto Gibt die automatisierte Verwaltung von Identitätsbereichen an.
NULL (Standard) Der Standardwert ist none , wenn der Wert von @auto_identity_range nicht trueist.

Aus Gründen der Abwärtskompatibilität wird NULLbeim Wert von @identityrangemanagementoption der Wert @auto_identity_range überprüft. Wenn der Wert von @identityrangemanagementoption jedoch nicht NULList, wird der Wert von @auto_identity_range ignoriert. Weitere Informationen finden Sie unter Replizieren von Identitätsspalten.

[ @delete_tracking = ] N'delete_tracking'

Gibt an, ob Löschungen repliziert werden. @delete_tracking ist nvarchar(5) mit einem Standardwert von true. false gibt an, dass Löschdaten nicht repliziert werden, und true gibt an, dass Löschungen repliziert werden. Dies ist das übliche Verhalten für die Seriendruckreplikation. Wenn @delete_tracking auf " festgelegt falseist , müssen die beim Abonnenten gelöschten Zeilen manuell entfernt werden, und zeilen, die beim Publisher gelöscht werden, müssen beim Abonnenten manuell entfernt werden.

Wichtig

Das Festlegen @delete_tracking auf Dies führt zu false einer Nichtkonvergenz. Wenn die Quelltabelle für einen Artikel bereits in einer anderen Publikation veröffentlicht wird, muss der Wert von @delete_tracking für beide Artikel gleich sein.

Hinweis

@delete_tracking Optionen können nicht mithilfe des Assistenten für neue Publikation oder des Dialogfelds "Publikationseigenschaften" festgelegt werden.

[ @compensate_for_errors = ] N'compensate_for_errors'

Zeigt an, ob kompensierende Aktionen ausgeführt werden, wenn während der Synchronisierung Fehler auftreten. @compensate_for_errors ist nvarchar(5), mit einem Standardwert von false. Wenn diese Einstellung truefestgelegt ist, führen Änderungen, die während der Synchronisierung nicht bei einem Abonnenten oder Publisher angewendet werden können, immer zu Ausgleichsaktionen zum Rückgängigmachen der Änderung. Ein falsch konfigurierter Abonnent, der einen Fehler generiert, kann jedoch dazu führen, dass Änderungen an anderen Abonnenten und Herausgebern rückgängig gemacht werden. false deaktiviert diese Ausgleichsaktionen, die Fehler werden jedoch weiterhin als Ausgleich protokolliert, und nachfolgende Zusammenführungen versuchen weiterhin, die Änderungen bis zum Erfolgreichen anzuwenden.

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 für einen Artikel bereits in einer anderen Publikation veröffentlicht wird, muss der Wert von @compensate_for_errors für beide Artikel gleich sein.

[ @stream_blob_columns = ] N'stream_blob_columns'

Gibt an, dass eine Datenstromoptimierung bei der Replikation von Binary Large Object-Spalten verwendet wird. @stream_blob_columns ist nvarchar(5) mit einem Standardwert von false. true bedeutet, dass die Optimierung versucht wird. @stream_blob_columns wird auf "true" festgelegt, wenn FILESTREAM aktiviert ist. Dadurch werden die Replikation der FILESTREAM-Daten optimal ausgeführt und die Arbeitsspeicherauslastung reduziert. Verwenden Sie zum Erzwingen, dass FILESTREAM-Tabellenartikel kein BLOB-Streaming verwenden, sp_changemergearticle um @stream_blob_columns auf "false" festzulegen.

Wichtig

Durch aktivieren dieser Speicheroptimierung kann die Leistung der Merge-Agent während der Synchronisierung reduziert werden. Die Option sollte nur verwendet werden, wenn Spalten mit Megabytes von Daten repliziert werden.

Hinweis

Bestimmte Zusammenführungsreplikationsfunktionen, z. B. logische Datensätze, können dennoch verhindern, dass die Datenstromoptimierung verwendet wird, wenn binäre große Objekte repliziert werden, auch wenn @stream_blob_columns auf " true.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Hinweise

sp_addmergearticle wird in der Seriendruckreplikation verwendet.

Wenn Sie Objekte veröffentlichen, werden ihre Definitionen auf Abonnenten kopiert. Wenn Sie ein Datenbankobjekt veröffentlichen, das von einem oder mehreren anderen Objekten abhängt, müssen Sie alle referenzierten Objekte veröffentlichen. Wenn Sie beispielsweise eine Sicht veröffentlichen, die von einer Tabelle abhängt, muss auch die Tabelle veröffentlicht werden.

Wenn Sie einen Wert für 3@partition_options angeben:

  • Es kann nur ein einzelnes Abonnement für jede Datenpartition in diesem Artikel geben. 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.

  • Metadaten werden immer dann sauber, wenn die Merge-Agent ausgeführt wird und die partitionierten Momentaufnahme schneller ablaufen. Beim Verwenden dieser Option sollten Sie in Erwägung ziehen, vom Abonnenten angeforderte partitionierte Momentaufnahmen zu aktivieren. Weitere Informationen finden Sie unter Erstellen einer Momentaufnahme für eine Mergeveröffentlichung mit parametrisierten Filtern.

Wenn Sie einen Artikel mit einem statischen horizontalen Filter mithilfe von @subset_filterclause zu einer vorhandenen Publikation mit parametrisierten Filtern hinzufügen, müssen Abonnements erneut initialisiert werden.

Wenn Sie @processing_order angeben, empfiehlt es sich, Lücken zwischen den Artikelreihenfolgewerten zu hinterlassen, wodurch es in Zukunft einfacher wird, neue Werte festzulegen. Wenn Sie z. B. drei Artikel haben, Article2Article1und Article3legen Sie @processing_order auf 10, 20und 30, und nicht 1auf , 2und , und 3. Weitere Informationen finden Sie unter Specify Merge Replication properties (Angeben von Mergereplikationseigenschaften).

Standardschemaoptionstabelle

In dieser Tabelle wird der Standardwert beschrieben, den die gespeicherte Prozedur festlegt, wenn ein NULL Wert für @schema_option angegeben wird, der vom Artikeltyp abhängt.

Artikeltyp Schemaoptionswert
func schema only 0x01
indexed view schema only 0x01
proc schema only 0x01
table 0x0C034FD1- SQL Server 2005 (9.x) und höher kompatible Publikationen mit einem systemeigenen Modus Momentaufnahme.

0x08034FF1- SQL Server 2005 (9.x) und höher kompatible Publikationen mit einem Zeichenmodus Momentaufnahme.
view schema only 0x01

Hinweis

Wenn die Publikation frühere Versionen von SQL Server unterstützt, ist 0x30034FF1die Standardschemaoption für table .

Gültige Schemaoptionstabelle

In der folgenden Tabelle werden die zulässigen Werte @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

Beispiele

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 .