sp_addmergearticle (Transact-SQL)

Fügt einer vorhandenen Mergeveröffentlichung einen Artikel hinzu. Diese gespeicherte Prozedur wird auf dem Verleger für die Veröffentlichungsdatenbank ausgeführt.

Themenlink (Symbol)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'
    Der Name der Veröffentlichung, die den Artikel enthält. publication ist ein Wert vom Datentyp sysname und weist keinen Standardwert auf.

  • [ @article= ] 'article'
    Ist der Name des Artikels. Der Name muss innerhalb der Veröffentlichung eindeutig sein. article ist ein Wert vom Datentyp sysname und weist keinen Standardwert auf. article muss sich auf dem lokalen Computer mit Microsoft SQL Server befinden und den Regeln für Bezeichner entsprechen.

  • [ @source_object= ] 'source_object'
    Das zu veröffentlichende Datenbankobjekt. source_object ist ein Wert vom Datentyp sysname und weist keinen Standardwert auf. 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'
    Der Artikeltyp. type ist ein Wert 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 viewschema 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 für den Artikel. description ist ein Wert vom Datentyp nvarchar(255). Der Standardwert ist NULL.

  • [ @column_tracking= ] 'column_tracking'
    Die Einstellung für die Nachverfolgung auf Spaltenebene. column_tracking ist ein Wert vom Datentyp nvarchar(10), der Standardwert ist FALSE. Mit true wird die Spaltennachverfolgung aktiviert. Mit false wird die Spaltennachverfolgung deaktiviert und die Konflikterkennung auf der Zeilenebene belassen. 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.

    HinweisHinweis

    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. Weitere Informationen zur Nachverfolgungsebene finden Sie im Abschnitt zur Nachverfolgungsebene unter Konflikterkennung und -lösung bei der Mergereplikation.

  • [ @status= ] 'status'
    Der Status des Artikels. status ist ein Wert 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 an, welche Vorgänge das System ausführen soll, wenn die Tabelle beim Anwenden der Momentaufnahme auf dem Abonnenten vorhanden ist. pre_creation_cmd ist ein Wert vom Datentyp nvarchar(10). Die folgenden Werte sind möglich.

    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 gelöscht, bevor sie neu erstellt wird. Erforderlich für die Unterstützung von Microsoft SQL Server Compact 3.5 SP2-Abonnenten.

    truncate

    Schneidet die Zieltabelle ab.

  • [ @creation_script= ] 'creation_script'
    Pfad und Name eines optionalen Artikelschemaskripts, das für die Erstellung des Artikels in der Abonnementdatenbank verwendet wurde. creation_script ist ein Wert vom Datentyp nvarchar(255). Der Standardwert ist NULL.

    HinweisHinweis

    Erstellungsskripts werden auf SQL Server Compact 3.5 SP2-Abonnenten nicht ausgeführt.

  • [ @schema_option= ] schema_option
    Das Bitmuster der Schemagenerierungsoption für den Artikel. schema_option ist ein Wert vom Datentyp binary(8) und kann das | (Bitweises OR)-Produkt mindestens eines der folgenden Werte sein.

    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. Informationen zum Zuordnen dieser Typen finden Sie im Abschnitt "Zuordnen von neuen Datentypen für frühere Versionen" unter Verwenden mehrerer Versionen von SQL Server in einer Replikationstopologie.

    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. Informationen zum Zuordnen dieser Typen finden Sie im Abschnitt "Zuordnen von neuen Datentypen für frühere Versionen" unter Verwenden mehrerer Versionen von SQL Server in einer Replikationstopologie.

    0x400000000

    Repliziert die Komprimierungsoption für Daten und Indizes. Weitere Informationen finden Sie unter Erstellen komprimierter Tabellen und Indizes.

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

    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 Richtlinien für den Entwurf 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.

    HinweisHinweis

    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'
    Eine WHERE-Klausel, mit der das horizontale Filtern von Tabellenartikeln festgelegt wird, ohne dass das Wort WHERE verwendet wird. subset_filterclause ist vom Datentyp nvarchar(1000). Der Standardwert ist eine leere Zeichenfolge.

    Wichtiger HinweisWichtig

    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'
    Der COM-basierte Konfliktlöser, der für die Auflösung von Konflikten für den Tabellenartikel verwendet wird, oder die .NET Framework-Assembly, die für die Ausführung von benutzerdefinierter Geschäftslogik für den Tabellenartikel aufgerufen wird. article_resolver ist ein Wert 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 Konfliktlöser von Microsoft erfordern eine als Eingabe für den Konfliktlöser bereitgestellte Spalte. resolver_info ist ein Wert vom Datentyp nvarchar(255). Der Standardwert ist NULL. Weitere Informationen finden Sie unter Microsoft COM-basierte Konfliktlöser.

  • [ @source_owner= ] 'source_owner'
    Der Name des Besitzers von source_object. source_owner ist ein Wert vom Datentyp sysname. Der Standardwert ist NULL. Bei NULL wird der aktuelle Benutzer als Besitzer angenommen.

  • [ @destination_owner= ] 'destination_owner'
    Der Besitzer des Objekts in der Abonnementdatenbank, falls der Besitzer nicht 'dbo' ist. destination_owner ist ein Wert 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 ein Wert 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 die automatische Behandlung von Identitätsbereichen für diesen Tabellenartikel in einer Veröffentlichung bei der Erstellung. auto_identity_range ist ein Wert vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Bei true ist das automatische Behandeln von Identitätsbereichen aktiviert, bei false ist es deaktiviert.

    HinweisHinweis

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

    HinweisHinweis

    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. Wenn der in threshold angegebene Prozentsatz verwendet wird, erstellt der Merge-Agent einen neuen Identitätsbereich. threshold ist ein Wert 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 überprüft wird, bevor ein Konfliktlöser in einer Mergereplikation verwendet wird. verify_resolver_signature ist ein Wert 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'
    Der Name des Objekts in der Abonnementdatenbank. destination_object ist ein Wert vom Datentyp sysname. Der Standardwert entspricht dem Wert von @source_object. 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, setzt der Wert in @source_object den Wert in destination_object außer Kraft.

  • [ @allow_interactive_resolver= ] 'allow_interactive_resolver'
    Aktiviert oder deaktiviert die Verwendung des interaktiven Konfliktlösers für einen Artikel. allow_interactive_resolver ist ein Wert vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Mit true wird die Verwendung des interaktiven Konfliktlösers aktiviert, mit false wird sie deaktiviert.

    HinweisHinweis

    Der interaktive Konfliktlöser wird von SQL Server Compact 3.5 SP2-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 das vom Mergeprozess verwendete Anmelde-/Benutzerkonto auf dem Verleger nicht über die richtigen Tabellenberechtigungen verfügt, werden die ungültigen Änderungen als Konflikte protokolliert. check_permissions ist ein Wert vom Datentyp int und kann das | (Bitweises OR)-Produkt mindestens eines der folgenden Werte sein.

    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 Aktualisierungsvorgä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 die von dieser gespeicherten Prozedur ausgeführte Aktion eine vorhandene Momentaufnahme für ungültig erklären kann. force_invalidate_snapshot ist ein Wert 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 die Momentaufnahme durch Hinzufügen eines Artikels ungültig werden kann. Wenn Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern, wird mit diesem Wert die Berechtigung erteilt, die vorhandene Momentaufnahme als veraltet zu markieren und eine neue Momentaufnahme zu generieren. 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'
    Zeigt an, dass ein Artikel in einer Mergeveröffentlichung auch in einer Transaktionsveröffentlichung veröffentlicht wird. published_in_tran_pub ist ein Wert 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 die erneute Initialisierung vorhandener Abonnements erfordern kann. force_reinit_subscription ist ein Wert 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 gibt an, dass vorhandene Abonnements durch Änderungen am Mergeartikel erneut initialisiert werden können. Außerdem wird mit diesem Wert die Berechtigung zur erneuten Initialisierung der Abonnements 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 ein Mitglied eines logischen Datensatzes ist. logical_record_level_conflict_detection ist ein Wert 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.

    HinweisHinweis

    Da logische Datensätze von SQL Server Compact 3.5 SP2-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 ein Mitglied eines logischen Datensatzes ist. logical_record_level_conflict_resolution ist ein Wert 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.

    HinweisHinweis

    Da logische Datensätze von SQL Server Compact 3.5 SP2-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 Vorgehensweise beim Partitionieren von Daten im Artikel. Dies ermöglicht Leistungsoptimierungen, wenn alle Zeilen nur zu einer einzigen Partition oder zu einem einzigen Abonnement gehören. partition_options ist ein Wert 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.

    HinweisHinweis

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

    HinweisHinweis

    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 Verwaltung des Identitätsbereichs für den Artikel behandelt wird. identityrangemanagementoption ist ein Wert vom Datentyp nvarchar(10). Die folgenden Werte sind möglich.

    Wert

    Beschreibung

    none

    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'
    Zeigt an, ob Löschvorgänge repliziert werden. delete_tracking ist ein Wert vom Datentyp nvarchar(5). Der Standardwert ist TRUE. false zeigt an, dass Löschvorgänge nicht repliziert werden, und true zeigt an, dass Löschvorgänge repliziert werden. 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.

    Wichtiger HinweisWichtig

    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.

    HinweisHinweis

    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 bei der Synchronisierung Fehler auftreten. compensate_for_errors i ist ein Wert vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Wenn dieser Wert auf true festgelegt wird, führen Änderungen, die während der Synchronisierung nicht auf einem Abonnenten oder Verleger angewendet werden können, immer zu kompensierenden Aktionen, um die Änderung rückgängig zu machen. Ein falsch konfigurierter Abonnent, der einen Fehler generiert, kann jedoch bewirken, dass Änderungen auf anderen Abonnenten und Verlegern rückgängig gemacht werden. false deaktiviert diese kompensierenden Aktionen. Die Fehler werden jedoch wie bei der Kompensation immer noch protokolliert, und in nachfolgenden Mergevorgängen wird weiterhin versucht, die Änderungen anzuwenden, bis dies erfolgreich ist.

    HinweisHinweis

    Bei Pullabonnements auf Abonnenten mit Microsoft SQL Server 2000, Version 8.00.858 und früher (einschließlich Service Pack 3), werden kompensierende Aktionen auch dann ausgeführt, wenn compensate_for_errors auf false festgelegt ist.

    Wichtiger HinweisWichtig

    Möglicherweise hat es zwar den Anschein, dass Daten in den betroffenen Zeilen nicht konvergent sind. Sobald Sie jedoch ggf. aufgetretene Fehler beheben, können Änderungen angewendet 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 beim Replizieren von BLOB-Spalten (Binary Large Object) eine Datenstromoptimierung verwendet werden soll. stream_blob_columns ist ein Wert 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. So kann die Replikation von FILESTREAM-Daten optimal und bei verringerter Arbeitsspeichernutzung ausgeführt werden. Legen Sie stream_blob_columns mit sp_changemergearticle auf false fest, um zu erzwingen, dass FILESTREAM-Tabellenartikel kein BLOB-Streaming verwenden.

    Wichtiger HinweisWichtig

    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.

    HinweisHinweis

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

  • 0x0C034FD1 - Mit SQL Server 2005 und höher kompatible Veröffentlichungen mit einer Momentaufnahme im systemeigenen Modus.

  • 0x08034FF1 - Mit SQL Server 2005 und höher kompatible Veröffentlichungen mit einer Momentaufnahme im Zeichenmodus.

  • 0x30034FF1 - Mit SQL Server 2000 und früheren Versionen kompatible Veröffentlichungen.

view schema only

0x01

HinweisHinweis

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.