sp_addmergearticle (Transact-SQL)
Gilt für: SQL Server Azure 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 active
das anfängliche Verarbeitungsskript zum Veröffentlichen der Tabelle ausgeführt wird. Wenn unsynced
das 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 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 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 0x10 0x40 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 0x10 0x40 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 NULL
der 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 undROWGUID
der deklarierten Spalten. Spalten werden mithilfe vonsp_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 für die Abwärtskompatibilität von Skripts 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 für die Abwärtskompatibilität von Skripts 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_snapshot
Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise eine vorhandene Momentaufnahme ungültig macht. @force_invalidate_snapshot ist bit, mit einem Standardwert von 0
.
0
Gibt 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.1
Gibt an, dass das Hinzufügen eines Artikels dazu führen kann, dass die Momentaufnahme ungültig ist. Wenn vorhandene Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern, erteilen Sie die Berechtigung, dass die vorhandene Momentaufnahme als veraltet gekennzeichnet und eine neue Momentaufnahme generiert wird. @force_invalidate_snapshot 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
.
false
Gibt an, dass ein Konflikt erkannt wird, wenn Änderungen an einer beliebigen Stelle im logischen Datensatz vorgenommen werden.false
Gibt an, dass die Standardmäßige Konflikterkennung gemäß @column_tracking verwendet 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 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 true ist. |
Aus Gründen der Abwärtskompatibilität wird NULL
beim Wert von @identityrangemanagementoption der Wert @auto_identity_range ü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 = ] 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 false
ist , 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 true
festgelegt 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
(erfolgreich) 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 bereinigt, wenn die Merge-Agent ausgeführt wird und die partitionierte Momentaufnahme schneller abläuft. 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, Article2
Article1
und Article3
legen Sie @processing_order auf 10
, 20
und 30
, und nicht 1
auf , 2
und , 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 einer Momentaufnahme im nativen Modus.0x08034FF1 - SQL Server 2005 (9.x) und höher kompatible Publikationen mit einer Momentaufnahme im Zeichenmodus. |
view schema only |
0x01 |
Hinweis
Wenn die Publikation frühere Versionen von SQL Server unterstützt, ist 0x30034FF1
die 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 .