sp_addarticle (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Erstellt einen Artikel und fügt ihn zu einer Veröffentlichung hinzu. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

sp_addarticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    [ , [ @source_table = ] N'source_table' ]
    [ , [ @destination_table = ] N'destination_table' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @type = ] N'type' ]
    [ , [ @filter = ] N'filter' ]
    [ , [ @sync_object = ] N'sync_object' ]
    [ , [ @ins_cmd = ] N'ins_cmd' ]
    [ , [ @del_cmd = ] N'del_cmd' ]
    [ , [ @upd_cmd = ] N'upd_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @description = ] N'description' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @filter_clause = ] N'filter_clause' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @status = ] status ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @sync_object_owner = ] N'sync_object_owner' ]
    [ , [ @filter_owner = ] N'filter_owner' ]
    [ , [ @source_object = ] N'source_object' ]
    [ , [ @artid = ] artid OUTPUT ]
    [ , [ @auto_identity_range = ] N'auto_identity_range' ]
    [ , [ @pub_identity_range = ] pub_identity_range ]
    [ , [ @identity_range = ] identity_range ]
    [ , [ @threshold = ] threshold ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @use_default_datatypes = ] use_default_datatypes ]
    [ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot' ]
[ ; ]

Argumente

[ @publication = ] N'Publikation'

Der Name der Publikation, die den Artikel enthält. Der Name muss in der Datenbank eindeutig sein. @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.

[ @source_table = ] N'source_table'

Dieser Parameter ist veraltet; verwenden Sie stattdessen @source_object . @source_table ist nvarchar(386), mit einem Standardwert von NULL. @source_table wird für Oracle Publisher nicht unterstützt.

[ @destination_table = ] N'destination_table'

Der Name der Zieltabelle (Abonnement), falls anders als @source_table oder die gespeicherte Prozedur. @destination_table ist "sysname" mit einem Standardwert von NULL. Wenn dieser Wert festgelegt istNULL, bedeutet dies, dass @source_table @destination_table entspricht.

[ @vertical_partition = ] N'vertical_partition'

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

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

  • true löscht alle Spalten außer dem deklarierten Primärschlüssel, nullfähigen Spalten ohne Standard und eindeutigen Schlüsselspalten. Spalten werden mithilfe von sp_articlecolumn hinzugefügt.

[ @type = ] N'type'

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

Wert Beschreibung
aggregate schema only Aggregatfunktion vom Typ schema only.
func schema only Funktion vom Typ schema only.
indexed view logbased Artikel für protokollbasierte indizierte Sicht. Diese Option wird für Oracle-Verleger nicht unterstützt. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden.
indexed view logbased manualboth Artikel für protokollbasierte indizierte Sicht mit manuell erstelltem Filter und manuell erstellter Sicht. Für diese Option müssen Sie sowohl @sync_objectals auch @filter Parameter angeben. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Diese Option wird für Oracle-Verleger nicht unterstützt.
indexed view logbased manualfilter Artikel für protokollbasierte indizierte Sicht mit manuell erstelltem Filter. Für diese Option müssen Sie sowohl @sync_objectals auch @filter Parameter angeben. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Diese Option wird für Oracle-Verleger nicht unterstützt.
indexed view logbased manualview Artikel für protokollbasierte indizierte Sicht mit manuell erstellter Sicht. Für diese Option müssen Sie den parameter @sync_object angeben. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Diese Option wird für Oracle-Verleger nicht unterstützt.
indexed view schema only Indizierte Sicht vom Typ schema only. Für diesen Artikeltyp muss die Basistabelle ebenfalls veröffentlicht werden.
logbased (Standard) Protokollbasierter Artikel.
logbased manualboth Protokollbasierter Artikel mit manuell erstelltem Filter und manuell erstellter Sicht. Für diese Option müssen Sie sowohl @sync_objectals auch @filter Parameter angeben. Diese Option wird für Oracle-Verleger nicht unterstützt.
logbased manualfilter Protokollbasierter Artikel mit manuell erstelltem Filter. Für diese Option müssen Sie sowohl @sync_objectals auch @filter Parameter angeben. Diese Option wird für Oracle-Verleger nicht unterstützt.
logbased manualview Protokollbasierter Artikel mit manuell erstellter Sicht. Für diese Option müssen Sie den parameter @sync_object angeben. Diese Option wird für Oracle-Verleger nicht unterstützt.
proc exec Repliziert die Ausführung der gespeicherten Prozedur auf alle Abonnenten des Artikels. Diese Option wird für Oracle-Verleger nicht unterstützt. Es wird empfohlen, die option serialisierbare proc exec anstelle von proc exec zu verwenden. Weitere Informationen finden Sie im Abschnitt "Typen der Ausführung gespeicherter Prozeduren" in der Veröffentlichung der Ausführung gespeicherter Prozeduren in der Transaktionsreplikation. Nicht verfügbar, wenn Change Data Capture aktiviert ist.
proc schema only Prozedur vom Typ schema only. Diese Option wird für Oracle-Verleger nicht unterstützt.
serializable proc exec Repliziert die Ausführung der gespeicherten Prozedur nur, wenn sie im Kontext einer serialisierbaren Transaktion ausgeführt wird. Diese Option wird für Oracle-Verleger nicht unterstützt.

Die Prozedur muss auch innerhalb einer expliziten Transaktion ausgeführt werden, damit die Prozedurausführung repliziert wird.
view schema only Sicht vom Typ schema only. Diese Option wird für Oracle-Verleger nicht unterstützt. Wenn diese Option verwendet wird, müssen Sie auch die Basistabelle veröffentlichen.

[ @filter = ] N'filter'

Die gespeicherte Prozedur (erstellt mit FOR REPLICATION), die zum horizontalen Filtern der Tabelle verwendet wird. @filter ist nvarchar(386), wobei die Standardeinstellung lautetNULL. Sie müssen sp_articleview ausführen und manuell sp_articlefilter, um die gespeicherte Ansichts- und Filterprozedur zu erstellen. Wenn nicht NULL, wird die Filterprozedur nicht erstellt (vorausgesetzt, die gespeicherte Prozedur wird manuell erstellt).

[ @sync_object = ] N'sync_object'

Der Name der Tabelle oder Ansicht, die zum Erstellen der Datendatei verwendet wird, um die Momentaufnahme für diesen Artikel darzustellen. @sync_object ist nvarchar(386), mit einem Standardwert von NULL. Wenn NULL, sp_articleview aufgerufen wird, um automatisch die Ansicht zu erstellen, die zum Generieren der Ausgabedatei verwendet wird. Dies geschieht nach dem Hinzufügen von Spalten mit sp_articlecolumn. Wenn nicht NULL, wird keine Ansicht erstellt (vorausgesetzt, die Ansicht wird manuell erstellt).

[ @ins_cmd = ] N'ins_cmd'

Der Replikationsbefehlstyp, der beim Replizieren von Einfügungen für diesen Artikel verwendet wird. @ins_cmd ist nvarchar(255), und kann einer der folgenden Werte sein.

Wert Beschreibung
NONE Es wird keine Aktion ausgeführt.
CALL sp_MSins_<table> (Standard)

Oder

CALL custom_stored_procedure_name
Eine gespeicherte Prozedur wird aufgerufen, die auf dem Abonnenten ausgeführt werden soll. Um diese Replikationsmethode zu verwenden, verwenden Sie @schema_option , um die automatische Erstellung der gespeicherten Prozedur anzugeben oder die angegebene gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels zu erstellen. <custom_stored_procedure> ist der Name einer vom Benutzer erstellten gespeicherten Prozedur. sp_MSins_<table> enthält den Namen der Zieltabelle anstelle des _table Teils des Parameters. Wenn @destination_owner angegeben wird, wird sie dem Namen der Zieltabelle vorangestellt. For example, for the ProductCategory table owned by the schema at the Production Subscriber, the parameter would be CALL sp_MSins_ProductionProductCategory. Für einen Artikel in einer Peer-to-Peer-Replikationstopologie <table> wird ein GUID-Wert angefügt. Die Angabe <custom_stored_procedure> wird für das Aktualisieren von Abonnenten nicht unterstützt.
SQL oder NULL Repliziert eine INSERT Anweisung. Die INSERT Anweisung stellt Werte für alle Spalten bereit, die im Artikel veröffentlicht wurden. Der folgende Befehl wird bei Einfügungen repliziert:

INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)

Weitere Informationen finden Sie in den Transaktionsartikeln – Angeben, wie Änderungen weitergegeben werden.

[ @del_cmd = ] N'del_cmd'

Der Replikationsbefehlstyp, der beim Replizieren von Löschlöschungen für diesen Artikel verwendet wird. @del_cmd ist "nvarchar(255)" und kann einen der folgenden Werte aufweisen.

Wert Beschreibung
NONE Es wird keine Aktion ausgeführt.
CALLsp_MSdel_<table> (Standard)

Oder

CALL <custom_stored_procedure_name>
Eine gespeicherte Prozedur wird aufgerufen, die auf dem Abonnenten ausgeführt werden soll. Um diese Replikationsmethode zu verwenden, verwenden Sie @schema_option , um die automatische Erstellung der gespeicherten Prozedur anzugeben oder die angegebene gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels zu erstellen. <custom_stored_procedure> ist der Name einer vom Benutzer erstellten gespeicherten Prozedur. sp_MSdel_<table> enthält den Namen der Zieltabelle anstelle des _table Teils des Parameters. Wenn @destination_owner angegeben wird, wird sie dem Namen der Zieltabelle vorangestellt. For example, for the ProductCategory table owned by the schema at the Production Subscriber, the parameter would be CALL sp_MSdel_ProductionProductCategory. Für einen Artikel in einer Peer-to-Peer-Replikationstopologie <table> wird ein GUID-Wert angefügt. Die Angabe <custom_stored_procedure> wird für das Aktualisieren von Abonnenten nicht unterstützt.
XCALL sp_MSdel_<table>

Oder

XCALL <custom_stored_procedure_name>
Ruft eine gespeicherte Prozedur mit XCALL Formatvorlagenparametern auf. Um diese Replikationsmethode zu verwenden, verwenden Sie @schema_option , um die automatische Erstellung der gespeicherten Prozedur anzugeben oder die angegebene gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels zu erstellen. Die Angabe einer vom Benutzer erstellten gespeicherten Prozedur ist für die Aktualisierung von Abonnenten nicht zulässig.
SQL oder NULL Repliziert eine DELETE Anweisung. Die DELETE Anweisung wird alle Primärschlüsselspaltenwerte bereitgestellt. Der folgende Befehl wird bei Löschungen repliziert:

DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

Weitere Informationen finden Sie in den Transaktionsartikeln – Angeben, wie Änderungen weitergegeben werden.

[ @upd_cmd = ] N'upd_cmd'

Der Replikationsbefehlstyp, der beim Replizieren von Updates für diesen Artikel verwendet wird. @upd_cmd ist nvarchar(255), und kann einer der folgenden Werte sein.

Wert Beschreibung
NONE Es wird keine Aktion ausgeführt.
CALL sp_MSupd_<table>

Oder

CALL <custom_stored_procedure_name>
Eine gespeicherte Prozedur wird aufgerufen, die auf dem Abonnenten ausgeführt werden soll. Um diese Replikationsmethode zu verwenden, verwenden Sie @schema_option , um die automatische Erstellung der gespeicherten Prozedur anzugeben oder die angegebene gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels zu erstellen.
MCALL sp_MSupd_<table>

Oder

MCALL <custom_stored_procedure_name>
Ruft eine gespeicherte Prozedur mit MCALL Formatvorlagenparametern auf. Um diese Replikationsmethode zu verwenden, verwenden Sie @schema_option , um die automatische Erstellung der gespeicherten Prozedur anzugeben oder die angegebene gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels zu erstellen. <custom_stored_procedure> ist der Name einer vom Benutzer erstellten gespeicherten Prozedur. sp_MSupd_<table> enthält den Namen der Zieltabelle anstelle des <table> Teils des Parameters. Wenn @destination_owner angegeben wird, wird sie dem Namen der Zieltabelle vorangestellt. For example, for the ProductCategory table owned by the schema at the Production Subscriber, the parameter would be MCALL sp_MSupd_ProductionProductCategory. Für einen Artikel in einer Peer-to-Peer-Replikationstopologie <table> wird ein GUID-Wert angefügt. Die Angabe einer vom Benutzer erstellten gespeicherten Prozedur ist für die Aktualisierung von Abonnenten nicht zulässig.
SCALL sp_MSupd_<table> (Standard)

Oder

SCALL <custom_stored_procedure_name>
Ruft eine gespeicherte Prozedur mit SCALL Formatvorlagenparametern auf. Um diese Replikationsmethode zu verwenden, verwenden Sie @schema_option , um die automatische Erstellung der gespeicherten Prozedur anzugeben oder die angegebene gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels zu erstellen. <custom_stored_procedure> ist der Name einer vom Benutzer erstellten gespeicherten Prozedur. sp_MSupd_<table> enthält den Namen der Zieltabelle anstelle des _table Teils des Parameters. Wenn @destination_owner angegeben wird, wird sie dem Namen der Zieltabelle vorangestellt. For example, for the ProductCategory table owned by the schema at the Production Subscriber, the parameter would be SCALL sp_MSupd_ProductionProductCategory. Für einen Artikel in einer Peer-to-Peer-Replikationstopologie wird _table mit einem GUID-Wert angefügt. Die Angabe einer vom Benutzer erstellten gespeicherten Prozedur ist für die Aktualisierung von Abonnenten nicht zulässig.
XCALL sp_MSupd_<table>

Oder

XCALL <custom_stored_procedure_name>
Ruft eine gespeicherte Prozedur mit XCALL Formatvorlagenparametern auf. Um diese Replikationsmethode zu verwenden, verwenden Sie @schema_option , um die automatische Erstellung der gespeicherten Prozedur anzugeben oder die angegebene gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels zu erstellen. Die Angabe einer vom Benutzer erstellten gespeicherten Prozedur ist für die Aktualisierung von Abonnenten nicht zulässig.
SQL oder NULL Repliziert eine UPDATE Anweisung. Die UPDATE Anweisung wird für alle Spaltenwerte und die Primärschlüsselspaltenwerte bereitgestellt. Der folgende Befehl wird bei Updates repliziert:

UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

Hinweis

Die Syntax für CALL, MCALL, SCALLund XCALL variieren die Datenmenge, die an den Abonnenten weitergegeben wird. Die CALL Syntax übergibt alle Werte für alle eingefügten und gelöschten Spalten. Die SCALL Syntax übergibt Werte nur für betroffene Spalten. Die XCALL Syntax übergibt Werte für alle Spalten, unabhängig davon, ob sie geändert wurden oder nicht, einschließlich des vorherigen Werts der Spalte. Weitere Informationen finden Sie in den Transaktionsartikeln – Angeben, wie Änderungen weitergegeben werden.

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

[ @description = ] N'description'

Ein beschreibender Eintrag für den Artikel. @description ist nvarchar(255), mit einem Standardwert von NULL.

[ @pre_creation_cmd = ] N'pre_creation_cmd'

Gibt die vom System durchzuführenden Schritte an, wenn es beim Anwenden der Momentaufnahme für diesen Artikel ein vorhandenes Objekt mit demselben Namen beim Abonnenten erkennt. @pre_creation_cmd ist nvarchar(10) und kann einen der folgenden Werte aufweisen.

Wert Beschreibung
none Verwendet keinen Befehl.
delete Löscht Daten aus der Zieltabelle vor dem Anwenden der Momentaufnahme. Wird der Artikel horizontal gefiltert, werden nur Daten in Spalten gelöscht, die von der Filterklausel angegeben werden. Wird von Oracle-Verlegern nicht unterstützt, wenn ein horizontaler Filter definiert wurde.
drop (Standard) Entfernt die Zieltabelle.
truncate Schneidet die Zieltabelle ab. Ist nicht gültig für ODBC- oder OLE DB-Abonnenten.

[ @filter_clause = ] N'filter_clause'

Eine WHERE-Klausel (Restriction), die einen horizontalen Filter definiert. Wenn Sie die Einschränkungsklausel eingeben, lassen Sie die Schlüsselwort (keyword) WHERE aus. @filter_clause ist nvarchar(max), mit einem Standardwert von NULL. Weitere Informationen finden Sie unter Filtern von veröffentlichten Daten.

[ @schema_option = ] schema_option

Eine Bitmaske der Schemagenerierungsoption für den angegebenen Artikel. @schema_option ist varbinary(8), mit einem Standardwert von NULL, und kann das | sein (Bitweise ODER) Produkt eines oder mehrerer dieser Werte:

Hinweis

Wenn dieser Wert lautet NULL, generiert das System automatisch eine gültige Schemaoption für den Artikel abhängig von anderen Artikeleigenschaften. Die Standardschemaoptionen zeigen den Wert an, der basierend auf der Kombination des Artikeltyps und des Replikationstyps ausgewählt wird.

Wert Beschreibung
0x00 Deaktiviert die Skripterstellung durch die Momentaufnahmen-Agent und verwendet @creation_script.
0x01 Generiert das Objekterstellungsskript (CREATE TABLE, CREATE PROCEDURE usw.). Dies ist der Standardwert für alle Artikel mit gespeicherten Prozeduren.
0x02 Generiert die gespeicherten Prozeduren, die Änderungen für den Artikel weitergeben (falls definiert).
0x04 Die Skripterstellung für Identitätsspalten erfolgt mithilfe der IDENTITY-Eigenschaft.
0x08 Replizieren von Zeitstempelspalten . Wenn nicht festgelegt, werden Zeitstempelspalten als binär repliziert.
0x10 Generiert einen entsprechenden gruppierten Index. Auch wenn diese Option nicht festgelegt ist, werden Indizes im Zusammenhang mit Primärschlüsseln und eindeutigen Einschränkungen generiert, wenn sie bereits in einer veröffentlichten Tabelle definiert sind.
0x201 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 eindeutigen Einschränkungen generiert, wenn sie bereits in einer veröffentlichten Tabelle definiert sind.
0x80 Repliziert Primärschlüsseleinschränkungen. Alle Indizes im Zusammenhang mit der Einschränkung werden ebenfalls repliziert, auch wenn Optionen 0x100x40 und nicht aktiviert sind.
0x1001 Repliziert Benutzertrigger für einen Tabellenartikel, wenn definiert.
0x2001 Repliziert Fremdschlüsseleinschränkungen. Wenn die referenzierte Tabelle nicht Teil einer Publikation ist, werden alle Fremdschlüsseleinschränkungen für eine veröffentlichte Tabelle nicht repliziert.
0x4001 Repliziert CHECK-Einschränkungen.
0x8001 Repliziert Standards.
0x1000 Repliziert die Sortierung auf Spaltenebene.

Hinweis: Diese Option sollte für Oracle-Herausgeber festgelegt werden, um Groß-/Kleinschreibungsvergleiche zu aktivieren.
0x20001 Repliziert erweiterte Eigenschaften, die dem Quellobjekt des veröffentlichten Artikels zugeordnet sind.
0x4000 Repliziert UNIQUE-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 für SQL Server 2005 (9.x)-Herausgeber 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 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 Standardbindungen
0x800000 Regelbindungen
0x1000000 Volltextindex
0x2000000 XML-Schemaauflistungen, die an XML-Spalten gebunden sind, werden nicht repliziert.
0x4000000 Repliziert Indizes in XML-Spalten .
0x8000000 Legt Schemas an, die auf dem Abonnent noch nicht 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 Berechtigungen für die Replikation.
0x80000000 Versuchen Sie, 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 Konvertiert benutzerdefinierte ClR-Typen (Common Language Runtime), die größer als 8000 Byte sind, in varbinary(max), 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 unter hierarchyid (Transact-SQL).For more information about how to use hierarchyid columns in replicated tables, see hierarchyid (Transact-SQL).
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".
0x20000000000 Repliziert das SPARSE-Attribut für Spalten. Weitere Informationen zu diesem Attribut finden Sie unter Verwenden von Spalten mit geringem Wert.
0x40000000000 Aktivieren Sie die Skripterstellung durch den Momentaufnahme-Agent, um eine speicheroptimierte Tabelle für den Abonnenten zu erstellen.
0x80000000000 Konvertiert gruppierten Index in nicht gruppierten Index für speicheroptimierte Artikel.
0x400000000000 Repliziert alle nicht gruppierten Columnstore-Indizes in den Tabellen(n)
0x800000000000 Repliziert alle gefilterten nicht gruppierten Columnstore-Indizes für die Tabelle(n).
NULL Die Replikation legt automatisch @schema_option auf einen Standardwert fest, dessen Wert von anderen Artikeleigenschaften abhängt. Die in den Hinweisen enthaltene Tabelle "Default Schema Options" zeigt die Standardschemaoptionen auf der Grundlage des Artikeltyps und des Replikationstyps an.

Der Standardwert für Nicht-SQL Server-Publikationen ist 0x050D3.

1 Für Oracle-Herausgeber nicht unterstützt.

Nicht alle @schema_option Werte sind für jeden Replikations- und Artikeltyp gültig. Die Tabelle "Gültige Schemaoptionen " im Abschnitt "Hinweise" zeigt die gültigen Schemaoptionen, die basierend auf der Kombination des Artikeltyps und des Replikationstyps ausgewählt werden können.

[ @destination_owner = ] N'destination_owner'

Der Name des Besitzers des Zielobjekts. @destination_owner ist "sysname" mit einem Standardwert von NULL. Wenn @destination_owner nicht angegeben wird, wird der Besitzer automatisch basierend auf den folgenden Regeln angegeben:

Bedingung Zielobjektbesitzer
Publikation verwendet Massenkopien im nativen Modus, um die anfängliche Momentaufnahme zu generieren, die nur SQL Server-Abonnenten unterstützt. Der Standardwert ist der Wert von @source_owner.
Veröffentlicht von einem Nicht-SQL Server-Herausgeber. Standardmäßig wird der Besitzer der Zieldatenbank verwendet.
Publikation verwendet Massenkopien im Zeichenmodus, um die anfängliche Momentaufnahme zu generieren, die Nicht-SQL Server-Abonnenten unterstützt. Nicht zugewiesen.

Um Nicht-SQL Server-Abonnenten zu unterstützen, muss @destination_owner sein NULL.

[ @status = ] Status

Gibt an, ob der Artikel aktiv ist. Zudem werden zusätzliche Optionen für die Weitergabe von Änderungen angegeben. @status ist winzig und kann das | (Bitweise ODER) Produkt eines oder mehrerer dieser Werte.

Wert Beschreibung
1 Der Artikel ist aktiv.
8 Enthält den Spaltennamen in INSERT Anweisungen.
16 (Standard) Verwendet parametrisierte Anweisungen.
24 Enthält den Spaltennamen in INSERT Anweisungen und verwendet parametrisierte Anweisungen.
64 Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Ein aktiver Artikel mit parametrisierten Anweisungen würde z. B. einen Wert 17 in dieser Spalte aufweisen. Ein Wert von 0 bedeutet, dass der Artikel inaktiv ist und keine zusätzlichen Eigenschaften definiert sind.

[ @source_owner = ] N'source_owner'

Der Besitzer des Quellobjekts. @source_owner ist "sysname" mit einem Standardwert von NULL. @source_owner muss für Oracle Publisher angegeben werden.

[ @sync_object_owner = ] N'sync_object_owner'

Der Besitzer der Ansicht, die den veröffentlichten Artikel definiert. @sync_object_owner ist "sysname" mit einem Standardwert von NULL.

[ @filter_owner = ] N'filter_owner'

Der Besitzer des Filters. @filter_owner ist "sysname" mit der Standardeinstellung "NULL.

[ @source_object = ] N'source_object'

Das datenbankobjekt, das veröffentlicht werden soll. @source_object ist "sysname" mit der Standardeinstellung "NULL. Wenn @source_table ist NULL, kann @source_object nicht sein NULL. @source_object sollten anstelle von @source_table verwendet werden. Weitere Informationen zu den Objekttypen, die mit Momentaufnahme oder Transaktionsreplikation veröffentlicht werden können, finden Sie unter Veröffentlichen von Daten und Datenbankobjekten.

[ @artid = ] artid OUTPUT

Die Artikel-ID des neuen Artikels. @artid ist ein OUTPUT-Parameter vom Typ int.

[ @auto_identity_range = ] N'auto_identity_range'

Aktiviert und deaktiviert die automatische Behandlung von Identitätsbereichs für eine Publikation zum Zeitpunkt der Erstellung. @auto_identity_range ist nvarchar(5) und kann einen der folgenden Werte aufweisen:

Wert Beschreibung
true Aktiviert die automatische Behandlung von Identitätsbereichen
false Deaktiviert die automatische Behandlung von Identitätsbereichen
NULL (Standard) Die Behandlung von Identitätsbereichs wird durch @identityrangemanagementoption festgelegt.

Hinweis

@auto_identity_range ist veraltet und wird nur aus Gründen der Abwärtskompatibilität bereitgestellt. 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 Bereichsgröße in Publisher, wenn der Artikel auf "true" festgelegt @identityrangemanagementoption oder auf "true" festgelegt @auto_identity_range. @pub_identity_range ist großint, mit einem Standardwert von NULL. @pub_identity_range wird für Oracle Publisher nicht unterstützt.

[ @identity_range = ] identity_range

Steuert die Bereichsgröße beim Abonnenten, wenn der Artikel @identityrangemanagementoption auf autooder @auto_identity_range auf "true" festgelegt ist. @identity_range ist großint, mit einem Standardwert von NULL. Wird verwendet, wenn @auto_identity_range auf "true" festgelegt ist. @identity_range wird für Oracle Publisher nicht unterstützt.

[ @threshold = ] Schwellenwert

Der Prozentwert, der steuert, wann der Verteilungs-Agent einen neuen Identitätsbereich zuweist. Wenn der prozentsatz der in @threshold angegebenen Werte verwendet wird, erstellt die Verteilungs-Agent einen neuen Identitätsbereich. @threshold ist int, mit einem Standardwert von NULL. Wird verwendet, wenn @identityrangemanagementoption auf "automatisch" festgelegt ist oder @auto_identity_range auf "true" festgelegt ist. @threshold wird für Oracle Publisher nicht unterstützt.

[ @force_invalidate_snapshot = ] force_invalidate_Momentaufnahme

Erkennt an, dass die von dieser gespeicherten Prozedur ausgeführte Aktion eine vorhandene Momentaufnahme ungültig werden kann. @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 durchgeführt.

  • 1Gibt an, dass das Hinzufügen eines Artikels dazu führen kann, dass die Momentaufnahme ungültig ist, und wenn Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern, die Berechtigung für die vorhandene Momentaufnahme als veraltet gekennzeichnet und eine neue Momentaufnahme generiert werden soll.

[ @use_default_datatypes = ] use_default_datatypes

Gibt an, ob beim Veröffentlichen eines Artikels aus einem Oracle Publisher die Standarddatentypzuordnungen für Spalten verwendet werden. @use_default_datatypes ist bit, mit einem Standardwert von 1.

  • 1 = Die standardmäßigen Artikelspaltenzuordnungen werden verwendet. Die Standarddatentypzuordnungen können durch Ausführen von sp_getdefaultdatatypemapping angezeigt werden.

  • 0= Benutzerdefinierte Artikelspaltenzuordnungen werden definiert und daher wird sp_articleview nicht aufgerufen.sp_addarticle

Wenn @use_default_datatypes auf "festgelegt" festgelegt 0ist, müssen Sie sp_changearticlecolumndatatype einmal ausführen, damit jede Spaltenzuordnung von der Standardeinstellung geändert wird. Nachdem alle benutzerdefinierten Spaltenzuordnungen definiert wurden, müssen Sie sp_articleview ausführen.

Hinweis

Dieser Parameter sollte nur für Oracle-Verleger verwendet werden. Wenn sie @use_default_datatypes0 für einen SQL Server Publisher festlegen, wird ein Fehler generiert.

[ @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 Die Replikation führt keine explizite Identitätsbereichsverwaltung aus. Diese Option wird nur für die Abwärtskompatibilität mit früheren Versionen von SQL Server empfohlen. Ist für die Peer-Replikation nicht zulässig.
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. Standardeinstellung manual in einer Peer-to-Peer-Topologie (@auto_identity_range wird ignoriert).

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.

[ @publisher = ] N'publisher'

Gibt einen Nicht-SQL Server-Herausgeber an. @publisher ist "sysname" mit der Standardeinstellung "NULL.

@publisher sollten beim Hinzufügen eines Artikels zu einem SQL Server-Herausgeber nicht verwendet werden.

[ @fire_triggers_on_snapshot = ] N'fire_triggers_on_Momentaufnahme'

Wenn replizierte Benutzertrigger ausgeführt werden, wenn die anfängliche Momentaufnahme angewendet wird. @fire_triggers_on_Momentaufnahme ist "nvarchar(5)", mit einem Standardwert von false. truebedeutet, dass Benutzertrigger für eine replizierte Tabelle ausgeführt werden, wenn die Momentaufnahme angewendet wird. Damit Trigger repliziert werden können, muss der Bitmaskenwert von @schema_option den Wert 0x100enthalten.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Hinweise

sp_addarticlewird in Momentaufnahme Replikation oder Transaktionsreplikation verwendet.

Standardmäßig veröffentlicht die Replikation keine Spalten in der Quelltabelle, wenn der Spaltendatentyp von der Replikation nicht unterstützt wird. Wenn Sie eine solche Spalte veröffentlichen müssen, müssen Sie sp_articlecolumn ausführen, um die Spalte hinzuzufügen.

Wird einer Veröffentlichung, die die Peer-zu-Peer-Transaktionsreplikation unterstützt, ein Artikel hinzugefügt, gelten die folgenden Einschränkungen:

  • Parametrisierte Anweisungen müssen für alle logbased-Artikel angegeben werden. Sie müssen in den @status Wert einschließen16.

  • Name und Besitzer der Ziel- und der Quelltabelle müssen übereinstimmen.

  • Der Artikel kann nicht horizontal oder vertikal gefiltert werden.

  • Die automatische Verwaltung von Identitätsbereichs wird nicht unterstützt. Sie müssen einen Manuellen Wert für @identityrangemanagementoption angeben.

  • Wenn in der Tabelle eine Zeitstempelspalte vorhanden ist, müssen Sie 0x08 in @schema_option einschließen, um die Spalte als Zeitstempel zu replizieren.

  • Für @ins_cmd, @upd_cmd und @del_cmd kann kein Wert SQL angegeben werden.

Weitere Informationen finden Sie unter Peer-to-Peer - Transaktionsreplikation.

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 @vertical_partition auf "true" festgelegt ist, wird die Erstellung der Ansicht zurückgestellt, sp_addarticle bis sp_articleview aufgerufen wird (nachdem die letzte sp_articlecolumn hinzugefügt wurde).

Wenn die Publikation das Aktualisieren von Abonnements zulässt und die veröffentlichte Tabelle keine eindeutigen Identifikationsspalte enthält, sp_addarticle wird der Tabelle automatisch eine Eindeutigidentifiziererspalte hinzugefügt.

Beim Replizieren auf einen Abonnenten, der keine Instanz von SQL Server (heterogene Replikation) ist, werden nur Transact-SQL-Anweisungen für INSERT, UPDATEund DELETE Befehle unterstützt.

Wenn der Protokollleser-Agent ausgeführt wird, kann das Hinzufügen eines Artikel zu einer Peer-zu-Peer-Veröffentlichung einen Deadlock zwischen dem Protokolllese-Agent und dem Prozess verursachen,der den Artikel hinzufügt. Um dieses Problem zu vermeiden, verwenden Sie vor dem Hinzufügen eines Artikels zu einer Peer-to-Peer-Publikation den Replikationsmonitor, um den Protokollleser-Agent auf dem Knoten zu beenden, in dem Sie den Artikel hinzufügen. Starten Sie den Protokolllese-Agent neu, nachdem Sie den Artikel hinzugefügt haben.

Wenn Sie @del_cmd auf NONE oder @ins_cmdNONEfestlegen, kann die Verteilung von UPDATE Befehlen auch davon betroffen sein, dass diese Befehle nicht gesendet werden, wenn eine begrenzungsgebundene Aktualisierung auftritt. (Bei einer gebundenen Aktualisierung handelt es sich um eine Art von UPDATE Anweisung des Herausgebers, die als DELETE/INSERT Paar für den Abonnenten repliziert wird.)

Standardschemaoptionen

In dieser Tabelle wird der von der Replikation festgelegte Standardwert beschrieben, wenn @schema_options nicht vom Benutzer angegeben wird, wobei dieser Wert vom Replikationstyp (oben dargestellt) und dem Artikeltyp (unten in der ersten Spalte) abhängt.

Artikeltyp Transaktionsreplikation Momentaufnahmereplikation
Nur Aggregatschema 0x01 0x01
Nur Func-Schema 0x01 0x01
Nur indiziertes Ansichtsschema 0x01 0x01
Indizierte Ansicht logbased 0x30F3 0x3071
Logbase manualboth für die indizierte Ansicht 0x30F3 0x3071
Logbased ManualFilter für die indizierte Ansicht 0x30F3 0x3071
Logbased ManualView indizierter Ansicht 0x30F3 0x3071
Logbased 0x30F3 0x3071
logbased manualfilter 0x30F3 0x3071
logbased manualview 0x30F3 0x3071
proc exec 0x01 0x01
Nur proc-Schema 0x01 0x01
serialisable proc exec 0x01 0x01
Nur Ansichtsschema 0x01 0x01

Hinweis

Wenn eine Publikation für die Aktualisierung in die Warteschlange aktiviert ist, wird dem standardwert, der in der Tabelle angezeigt wird, ein @schema_option Wert 0x80 hinzugefügt. Die Standard -@schema_option für eine Nicht-SQL Server-Publikation lautet 0x050D3.

Gültige Schemaoptionen

In dieser Tabelle werden die zulässigen Werte @schema_option basierend auf dem Replikationstyp (oben dargestellt) und dem Artikeltyp (unten in der ersten Spalte) beschrieben.

Artikeltyp Transaktionsreplikation Momentaufnahmereplikation
Logbased Alle Optionen Alle Optionen, aber 0x02
logbased manualfilter Alle Optionen Alle Optionen, aber 0x02
logbased manualview Alle Optionen Alle Optionen, aber 0x02
Indizierte Ansicht logbased Alle Optionen Alle Optionen, aber 0x02
Logbased ManualFilter für die indizierte Ansicht Alle Optionen Alle Optionen, aber 0x02
Logbased ManualView indizierter Ansicht Alle Optionen Alle Optionen, aber 0x02
Logbase manualboth für die indizierte Ansicht Alle Optionen Alle Optionen, aber 0x02
proc exec 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000
serialisable proc exec 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000
Nur proc-Schema 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000
Nur Ansichtsschema 0x01, 0x010, , 0x020, 0x040, 0x20000x01000x40000, 0x100000, 0x200000, und 0x4000000x8000000x20000000x80000000x400000000x80000000 0x01, 0x010, , 0x020, 0x040, 0x20000x01000x40000, 0x100000, 0x200000, und 0x4000000x8000000x20000000x80000000x400000000x80000000
Nur Func-Schema 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000
Nur indiziertes Ansichtsschema 0x01, 0x010, , 0x020, 0x040, 0x20000x01000x40000, 0x100000, 0x200000, und 0x4000000x8000000x20000000x80000000x400000000x80000000 0x01, 0x010, , 0x020, 0x040, 0x20000x01000x40000, 0x100000, 0x200000, und 0x4000000x8000000x20000000x80000000x400000000x80000000

Hinweis

Zum Aktualisieren von Publikationen in die Warteschlange müssen die @schema_option Werte von 0x8000 und 0x80 aktiviert sein. Die unterstützten @schema_option Werte für Nicht-SQL Server-Publikationen sind: 0x01, , 0x02, 0x10, 0x40, , 0x80, und 0x40000x10000X8000.

Beispiele

DECLARE @publication    AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL'; 
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';

-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema 
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @table, 
    @source_object = @table,
    @source_owner = @schemaowner, 
    @schema_option = 0x80030F3,
    @vertical_partition = N'true', 
    @type = N'logbased',
    @filter_clause = @filterclause;

-- (Optional) Manually call the stored procedure to create the 
-- horizontal filtering stored procedure. Since the type is 
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter 
    @publication = @publication, 
    @article = @table, 
    @filter_clause = @filterclause, 
    @filter_name = @filtername;

-- Add all columns to the article.
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table;

-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table, 
    @column = N'DaysToManufacture', 
    @operation = N'drop';

-- (Optional) Manually call the stored procedure to create the 
-- vertical filtering view. Since the type is 'logbased', 
-- this stored procedures is executed automatically.
EXEC sp_articleview 
    @publication = @publication, 
    @article = @table,
    @filter_clause = @filterclause;
GO

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder db_owner feste Datenbankrolle können ausgeführt werden sp_addarticle.