sp_addarticle (Transact-SQL)
Erstellt einen Artikel und fügt ihn zu einer Veröffentlichung hinzu. Diese gespeicherte Prozedur wird auf Verlegerebene für die Veröffentlichungsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
Syntax
sp_addarticle [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @source_table = ] 'source_table' ]
[ , [ @destination_table = ] 'destination_table' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @type = ] 'type' ]
[ , [ @filter = ] 'filter' ]
[ , [ @sync_object= ] 'sync_object' ]
[ , [ @ins_cmd = ] 'ins_cmd' ]
[ , [ @del_cmd = ] 'del_cmd' ]
[ , [ @upd_cmd = ] 'upd_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @description = ] 'description' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @filter_clause = ] 'filter_clause' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @status = ] status ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @sync_object_owner = ] 'sync_object_owner' ]
[ , [ @filter_owner = ] 'filter_owner' ]
[ , [ @source_object = ] 'source_object' ]
[ , [ @artid = ] article_ID OUTPUT ]
[ , [ @auto_identity_range = ] '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 = ] identityrangemanagementoption ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ]
Argumente
[ [ @publication =] 'publication'
Der Name der Veröffentlichung, die den Artikel enthält. Der Name muss in der Datenbank eindeutig sein. publication ist vom Datentyp sysname und hat keinen Standardwert.[ @article=] 'article'
Der Name des Artikels. Der Name muss innerhalb der Veröffentlichung eindeutig sein. article ist vom Datentyp sysname und hat keinen Standardwert.[ @source_table = ] 'source_table'
Dieser Parameter ist veraltet. Verwenden Sie stattdessen source_object.Der Parameter wird von Oracle-Verlegern nicht unterstützt.
[ @destination_table = ] 'destination_table'
Entspricht dem Namen der Zieltabelle (Abonnementtabelle), wenn ein Unterschied zu source_tableoder der gespeicherten Prozedur besteht. destination_table ist vom Datentyp sysname. Der Standardwert ist NULL. Dies bedeutet, dass source_table gleich destination_table ist.[ @vertical_partition = ] 'vertical_partition'
Aktiviert und deaktiviert die Spaltenfilterung für einen Tabellenartikel. vertical_partition ist vom Datentyp nchar(5). Der Standardwert ist FALSE.false gibt an, dass keine vertikale Filterung aktiviert ist und veröffentlicht alle Spalten.
Bei true werden alle Spalten außer dem deklarierten Primärschlüssel, Spalten ohne Standardwerte, die NULL zulassen, sowie Spalten für eindeutige Schlüssel gelöscht. Spalten werden mithilfe von sp_articlecolumn hinzugefügt.
[ @type=] 'type'
Entspricht dem Artikeltyp. type ist vom Datentyp sysname. Die folgenden Werte sind möglich:Wert
Beschreibung
aggregate schema only
Aggregatfunktion vom Typ schema only.
func schema only
Nur Funktion mit Schema
indexed view logbased
Artikel für protokollbasierte indizierte Sicht. Wird von Oracle-Verlegern 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. Diese Option setzt voraus, dass die sync_object- und filter-Parameter angegeben werden. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Wird von Oracle-Verlegern nicht unterstützt.
indexed view logbased manualfilter
Artikel für protokollbasierte indizierte Sicht mit manuell erstelltem Filter. Diese Option setzt voraus, dass die sync_object- und filter-Parameter angegeben werden. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Wird von Oracle-Verlegern nicht unterstützt.
indexed view logbased manualview
Artikel für protokollbasierte indizierte Sicht mit manuell erstellter Sicht. Diese Option setzt voraus, dass der sync_object-Parameter angegeben wird. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Wird von Oracle-Verlegern nicht unterstützt.
indexed view schema only
Nur indizierte Sicht mit Schema 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. Diese Option setzt voraus, dass die sync_object- und filter-Parameter angegeben werden. Wird von Oracle-Verlegern nicht unterstützt.
logbased manualfilter
Protokollbasierter Artikel mit manuell erstelltem Filter. Diese Option setzt voraus, dass die sync_object- und filter-Parameter angegeben werden. Wird von Oracle-Verlegern nicht unterstützt.
logbased manualview
Protokollbasierter Artikel mit manuell erstellter Sicht. Diese Option setzt voraus, dass der sync_object-Parameter angegeben wird. Wird von Oracle-Verlegern nicht unterstützt.
proc exec
Repliziert die Ausführung der gespeicherten Prozedur auf alle Abonnenten des Artikels. Wird von Oracle-Verlegern nicht unterstützt. Wir empfehlen, dass Sie die Option serializable proc exec anstelle von proc exec verwenden. Weitere Informationen finden Sie im Abschnitt "Typen von Artikeln für die Ausführung einer gespeicherten Prozedur" unter Veröffentlichen der Ausführung von gespeicherten Prozeduren in der Transaktionsreplikation. Nicht verfügbar, wenn Change Data Capture aktiviert ist.
proc schema only
Prozedur vom Typ schema only. Wird von Oracle-Verlegern nicht unterstützt.
serializable proc exec
Repliziert die Ausführung der gespeicherten Prozedur nur, wenn die Prozedur im Kontext einer serialisierbaren Transaktion ausgeführt wird. Wird von Oracle-Verlegern nicht unterstützt.
Die Prozedur muss außerdem im Rahmen einer expliziten Transaktion ausgeführt werden, damit die Ausführung repliziert werden kann.
view schema only
Nur Sicht mit Schema Wird von Oracle-Verlegern nicht unterstützt. Wenn diese Option verwendet wird, müssen Sie auch die Basistabelle veröffentlichen.
[ @filter = ] 'filter'
Entspricht der gespeicherten Prozedur (erstellt mit FOR REPLICATION), mit der die Tabelle horizontal gefiltert wird. filter ist vom Datentyp nvarchar(386). Der Standardwert ist NULL. sp_articleview und sp_articlefilter müssen manuell ausgeführt werden, um die gespeicherte Sicht- und Filterprozedur zu erstellen. Bei einem Wert ungleich NULL wird die Filterprozedur nicht erstellt (es wird angenommen, dass die gespeicherte Prozedur manuell erstellt wird).[ @sync_object = ] 'sync_object'
Entspricht dem Namen der Tabelle oder Sicht, die zum Erzeugen der Datendatei dient, mit der die Momentaufnahme für diesen Artikel dargestellt wird. sync_object ist vom Datentyp nvarchar(386). Der Standardwert ist NULL. Bei NULL wird sp_articleview aufgerufen, um die Sicht automatisch zu erstellen, die zur Generierung der Ausgabedatei verwendet wird. Dies erfolgt nach jedem Hinzufügen von Spalten mit sp_articlecolumn. Bei einem Wert ungleich NULL wird keine Sicht erstellt (es wird angenommen, dass die Sicht manuell erstellt wird).[ @ins_cmd = ] 'ins_cmd'
Ist der Replikationsbefehlstyp, der zum Replizieren von Einfügungen für diesen Artikel dient. ins_cmd ist vom Datentyp nvarchar(255). Die folgenden Werte sind möglich:Wert
Beschreibung
NONE
Es wird keine Aktion ausgeführt.
CALL sp_MSins_Tabelle (Standard)
- oder -
CALL custom_stored_procedure_name
Eine gespeicherte Prozedur wird aufgerufen, die auf dem Abonnenten ausgeführt werden soll. Für die Verwendung dieser Replikationsmethode legen Sie mit schema_option fest, dass die gespeicherte Prozedur automatisch erstellt wird, oder erstellen Sie die gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels. 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. Wird destination_owner angegeben, wird der Wert dem Namen der Zieltabelle vorangestellt. Für die ProductCategory-Tabelle im Besitz des Production-Schemas auf dem Abonnenten lautet der Parameter beispielsweise CALL sp_MSins_ProductionProductCategory. Bei einem Artikel in einer Peer-zu-Peer-Replikationstopologie wird _table mit einem GUID-Wert angefügt. custom_stored_procedure wird für Updateabonnenten nicht unterstützt.
SQL oder NULL
Repliziert eine INSERT-Anweisung. Für die INSERT-Anweisung werden Werte für alle in dem Artikel veröffentlichten Spalten bereitgestellt. Der folgende Befehl wird bei Einfügungen repliziert:
INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)
Weitere Informationen finden Sie unter Angeben der Weitergabemethode für Änderungen bei Transaktionsartikeln.
[ @del_cmd =] 'del_cmd'
Ist der Replikationsbefehlstyp, der zum Replizieren von Löschungen für diesen Artikel dient. del_cmd ist vom Datentyp nvarchar(255). Die folgenden Werte sind möglich:Wert
Beschreibung
NONE
Es wird keine Aktion ausgeführt.
CALL sp_MSdel_table (Standard)
- oder -
CALL custom_stored_procedure_name
Eine gespeicherte Prozedur wird aufgerufen, die auf dem Abonnenten ausgeführt werden soll. Für die Verwendung dieser Replikationsmethode legen Sie mit schema_option fest, dass die gespeicherte Prozedur automatisch erstellt wird, oder erstellen Sie die gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels. 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. Wird destination_owner angegeben, wird der Wert dem Namen der Zieltabelle vorangestellt. Für die ProductCategory-Tabelle im Besitz des Production-Schemas auf dem Abonnenten lautet der Parameter beispielsweise CALL sp_MSdel_ProductionProductCategory. Bei einem Artikel in einer Peer-zu-Peer-Replikationstopologie wird _table mit einem GUID-Wert angefügt. custom_stored_procedure wird für Updateabonnenten nicht unterstützt.
XCALL sp_MSdel_Tabelle
- oder -
XCALL custom_stored_procedure_name
Ruft eine gespeicherte Prozedur auf, die XCALL-Parameter akzeptiert. Für die Verwendung dieser Replikationsmethode legen Sie mit schema_option fest, dass die gespeicherte Prozedur automatisch erstellt wird, oder erstellen Sie die gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels. Die Angabe einer benutzerdefinierten gespeicherten Prozedur ist für Updateabonnenten nicht zulässig.
SQL oder NULL
Repliziert eine DELETE-Anweisung. Für die DELETE-Anweisung werden alle Spaltenwerte der Primärschlüssel 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 unter Angeben der Weitergabemethode für Änderungen bei Transaktionsartikeln.
[ @upd_cmd =] 'upd_cmd'
Ist der Replikationsbefehlstyp, der zum Replizieren von Updates für diesen Artikel dient. upd_cmd ist vom Datentyp nvarchar(255). Die folgenden Werte sind möglich:Wert
Beschreibung
NONE
Es wird keine Aktion ausgeführt.
CALL sp_MSupd_Tabelle
- oder -
CALL custom_stored_procedure_name
Eine gespeicherte Prozedur wird aufgerufen, die auf dem Abonnenten ausgeführt werden soll. Für die Verwendung dieser Replikationsmethode legen Sie mit schema_option fest, dass die gespeicherte Prozedur automatisch erstellt wird, oder erstellen Sie die gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels.
MCALL sp_MSupd_Tabelle
- oder -
MCALL custom_stored_procedure_name
Ruft eine gespeicherte Prozedur auf, die MCALL-Parameter akzeptiert. Für die Verwendung dieser Replikationsmethode legen Sie mit schema_option fest, dass die gespeicherte Prozedur automatisch erstellt wird, oder erstellen Sie die gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels. 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. Wird destination_owner angegeben, wird der Wert dem Namen der Zieltabelle vorangestellt. Für die ProductCategory-Tabelle im Besitz des Production-Schemas auf dem Abonnenten lautet der Parameter beispielsweise MCALL sp_MSupd_ProductionProductCategory. Bei einem Artikel in einer Peer-zu-Peer-Replikationstopologie wird _table mit einem GUID-Wert angefügt. Die Angabe einer benutzerdefinierten gespeicherten Prozedur ist für Updateabonnenten nicht zulässig.
SCALL sp_MSupd_Tabelle (Standard)
- oder -
SCALL custom_stored_procedure_name
Ruft eine gespeicherte Prozedur auf, die SCALL-Parameter akzeptiert. Für die Verwendung dieser Replikationsmethode legen Sie mit schema_option fest, dass die gespeicherte Prozedur automatisch erstellt wird, oder erstellen Sie die gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels. 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. Wird destination_owner angegeben, wird der Wert dem Namen der Zieltabelle vorangestellt. Für die ProductCategory-Tabelle im Besitz des Production-Schemas auf dem Abonnenten lautet der Parameter beispielsweise SCALL sp_MSupd_ProductionProductCategory. Bei einem Artikel in einer Peer-zu-Peer-Replikationstopologie wird _table mit einem GUID-Wert angefügt. Die Angabe einer benutzerdefinierten gespeicherten Prozedur ist für Updateabonnenten nicht zulässig.
XCALL sp_MSupd_Tabelle
- oder -
XCALL custom_stored_procedure_name
Ruft eine gespeicherte Prozedur auf, die XCALL-Parameter akzeptiert. Für die Verwendung dieser Replikationsmethode legen Sie mit schema_option fest, dass die gespeicherte Prozedur automatisch erstellt wird, oder erstellen Sie die gespeicherte Prozedur in der Zieldatenbank jedes Abonnenten des Artikels. Die Angabe einer benutzerdefinierten gespeicherten Prozedur ist für Updateabonnenten nicht zulässig.
SQL oder NULL
Repliziert eine UPDATE-Anweisung. Die UPDATE-Anweisung wird für alle Spaltenwerte und für die Spaltenwerte der Primärschlüssel 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 CALL-, MCALL-, SCALL- und XCALL-Syntax variiert den Umfang der Daten, die an den Abonnenten weitergegeben werden. Die CALL-Syntax übergibt alle Werte für alle eingefügten und gelöschten Spalten. Die SCALL-Syntax übergibt nur die Werte für betroffene Spalten. Die XCALL-Syntax übergibt die Werte für alle Spalten, unabhängig davon, ob diese geändert wurden, einschließlich des vorherigen Werts der Spalte. Weitere Informationen finden Sie unter Angeben der Weitergabemethode für Änderungen bei Transaktionsartikeln.
[ @creation_script =] 'creation_script'
Entspricht dem Pfad und Namen eines optionalen Artikelschemaskripts, mit dem der Artikel in der Abonnementdatenbank erstellt wird. creation_script ist vom Datentyp nvarchar(255). Der Standardwert ist NULL.[ @description =] 'description'
Ist ein beschreibender Eintrag für den Artikel. description ist vom Datentyp nvarchar(255). Der Standardwert ist NULL.[ @pre_creation_cmd =] '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 vom Datentyp nvarchar(10). Die folgenden Werte sind möglich:Wert
Beschreibung
n/v
Verwendet keinen Befehl.
löschen
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. Gilt nicht für ODBC- oder OLE DB-Abonnenten.
[ @filter_clause=] 'filter_clause'
Eine Einschränkungsklausel (WHERE), die einen horizontalen Filter definiert. Wenn Sie die Einschränkungsklausel eingeben, lassen Sie das Schlüsselwort WHERE weg. filter_clause ist vom Datentyp ntext. Der Standardwert ist NULL. Weitere Informationen finden Sie unter Filtern von veröffentlichten Daten.[ @schema_option =] schema_option
Ist eine Bitmaske der Schemagenerierungsoption für den angegebenen Artikel. schema_option ist vom Datentyp binary(8) und kann dem Produkt | (bitweises OR) für mindestens einen der folgenden Werte entsprechen:Hinweis Ist dieser Wert NULL, generiert das System automatisch eine gültige Schemaoption für den Artikel, abhängig von anderen Artikeleigenschaften. Die in den Hinweisen angegebene Default Schema Options-Tabelle zeigt den Wert an, der auf der Grundlage der Kombination des Artikeltyps und des Replikationstyps gewählt wird.
Wert
Beschreibung
0x00
Deaktiviert die Skripterstellung durch den Momentaufnahme-Agent und verwendet creation_script.
0x01
Generiert das Objekterstellungsskript (CREATE TABLE, CREATE PROCEDURE usw.). Dieser Wert ist der Standard 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
Repliziert timestamp-Spalten. Falls nicht festgelegt, werden timestamp-Spalten als binary repliziert.
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. Wird nicht für Oracle-Verleger unterstützt.
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 Primärschlüsseleinschrä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. Wird nicht für Oracle-Verleger unterstützt.
0x200
Repliziert Fremdschlüsseleinschränkungen. Wenn die Tabelle, auf die verwiesen wird, nicht Teil einer Veröffentlichung ist, werden keine Fremdschlüsseleinschränkungen für eine veröffentlichte Tabelle repliziert. Wird nicht für Oracle-Verleger unterstützt.
0x400
Repliziert CHECK-Einschränkungen. Wird nicht für Oracle-Verleger unterstützt.
0x800
Repliziert Standards. Wird nicht für Oracle-Verleger unterstützt.
0x1000
Repliziert die Sortierung auf Spaltenebene.
Hinweis Dieser Option sollte für Oracle-Verleger eingerichtet werden, um Vergleiche zu ermöglichen, die nach Groß-/Kleinschreibung unterscheiden.
0x2000
Repliziert erweiterte Eigenschaften, die dem Quellobjekt des veröffentlichten Artikels zugeordnet sind. Wird nicht für Oracle-Verleger unterstützt.
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 SQL Server 2005-Verleger nicht gültig.
0x10000
Repliziert CHECK-Einschränkungen als NOT FOR REPLICATION, sodass diese Einschränkungen bei 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
Standardbindungen
0x800000
Regelbindungen
0x1000000
Volltextindex
0x2000000
XML-Schemaauflistungen, die an xml-Spalten gebunden sind, werden nicht repliziert.
0x4000000
Repliziert Indizes für xml-Spalten.
0x8000000
Legt Schemas an, die auf dem Abonnent noch nicht vorhanden sind.
0x10000000
Konvertiert xml-Spalten auf dem Abonnenten in ntext.
0x20000000
Konvertiert in SQL Server 2005 eingeführte LOB-Datentypen (Large Object) (nvarchar(max), varchar(max) und varbinary(max)) in Datentypen, die in SQL Server 2000 unterstützt werden.
0x40000000
Berechtigungen für die Replikation.
0x80000000
Der Versuch, Abhängigkeiten für Objekte zu löschen, die nicht Teil der Veröffentlichung sind.
0x100000000
Verwenden Sie diese Option, um das FILESTREAM-Attribut zu replizieren, wenn es für varbinary(max)-Spalten angegeben wird. Geben Sie diese Option nicht an, wenn Sie Tabellen auf SQL Server 2005-Abonnenten replizieren. Das Replizieren von Tabellen mit FILESTREAM-Spalten auf SQL Server 2000-Abonnenten wird unabhängig von der Festlegung dieser Schemaoption nicht unterstützt.
Siehe die verwandte Option 0x800000000.
0x200000000
Konvertiert in SQL Server 2008 eingeführte Datums- und Zeitdatentypen (date, time, datetimeoffset und datetime2) in Datentypen, die in früheren Versionen von SQL Server unterstützt werden.
0x400000000
Repliziert die Komprimierungsoption für Daten und Indizes. Weitere Informationen finden Sie unter Datenkomprimierung.
0x800000000
Legen Sie diese Option fest, um FILESTREAM-Daten in einer eigenen Dateigruppe auf dem Abonnenten zu speichern. Wenn diese Option nicht festgelegt wird, werden FILESTREAM-Daten in der Standarddateigruppe gespeichert. Bei der Replikation werden keine Dateigruppen erstellt. Daher müssen Sie beim Festlegen dieser Option die Dateigruppe erstellen, bevor Sie die Momentaufnahme auf dem Abonnenten anwenden. Weitere Informationen zum Erstellen von Objekten vor dem Anwenden der Momentaufnahme finden Sie unter Ausführen von Skripts vor und nach dem Anwenden der Momentaufnahme.
Siehe die verwandte Option 0x100000000.
0x1000000000
Konvertiert CLR-benutzerdefinierte Typen (Common Language Runtime User-Defined Type, CLR UDT) mit mehr als 8000 Bytes in varbinary(max), sodass Spalten vom Typ UDT auf Abonnenten repliziert werden können, auf denen SQL Server 2005 ausgeführt wird.
0x2000000000
Konvertiert den hierarchyid-Datentyp in varbinary(max), sodass Spalten vom Typ hierarchyid auf Abonnenten repliziert werden können, auf denen SQL Server 2005 ausgeführt wird. Weitere Informationen zum Verwenden von hierarchyid-Spalten in replizierten Tabellen finden Sie unter hierarchyid (Transact-SQL).
0x4000000000
Repliziert die gefilterten Indizes in der Tabelle. Weitere Informationen zu gefilterten Indizes finden Sie unter Erstellen gefilterter Indizes.
0x8000000000
Konvertiert den geography-Datentyp und den geometry-Datentyp in varbinary(max), sodass Spalten dieser Typen auf Abonnenten repliziert werden können, auf denen SQL Server 2005 ausgeführt wird.
0x10000000000
Repliziert Indizes für Spalten vom Typ geography und geometry.
0x20000000000
Repliziert das SPARSE-Attribut für Spalten. Weitere Informationen zu diesem Attribut finden Sie unter Verwenden von Spalten mit geringer Dichte.
NULL
Bei der Replikation wird schema_option automatisch auf einen Standardwert festgelegt, wobei der Wert von anderen Artikeleigenschaften abhängig ist. Die in den Hinweisen enthaltene Tabelle "Default Schema Options" zeigt die Standardschemaoptionen auf der Grundlage des Artikeltyps und des Replikationstyps an.
Der Standard für Nicht-SQL Server-Veröffentlichungen ist 0x050D3.
Nicht alle schema_option-Werte sind für jeden Replikations- oder Artikeltyp gültig. Die in den Hinweisen enthaltene Valid Schema Options-Tabelle zeigt die gültigen Schemaoptionen an, die auf der Grundlage der Kombination des Artikeltyps und des Replikationstyps gewählt werden können.
[ @destination_owner =] 'destination_owner'
Entspricht dem Namen des Eigentümers des Zielobjekts. destination_owner ist vom Datentyp sysname. Der Standardwert ist NULL. Wird destination_owner nicht angegeben, wird der Besitzer automatisch anhand der folgenden Regeln angegeben:Bedingung
Zielobjektbesitzer
Die Veröffentlichung generiert die Anfangsmomentaufnahme, die nur SQL Server-Abonnenten unterstützt, über das Massenkopieren im einheitlichen Modus.
Der Standardwert ist der Wert von source_owner.
Veröffentlicht von einem Nicht-SQL Server-Verleger.
Standardmäßig wird der Besitzer der Zieldatenbank verwendet.
Die Veröffentlichung generiert die Anfangsmomentaufnahme, die Nicht-SQL Server-Abonnenten unterstützt, über das Massenkopieren im Zeichenmodus.
Nicht zugewiesen.
destination_owner muss NULL sein, um Nicht-SQL Server-Abonnenten zu unterstützen.
[ @status=] status
Gibt an, ob der Artikel aktiv ist. Zudem werden zusätzliche Optionen für die Weitergabe von Änderungen angegeben. status ist vom Datentyp tinyint und kann dem Produkt | (bitweises OR) für mindestens einen der folgenden Werte entsprechen.Wert
Beschreibung
1
Der Artikel ist aktiv.
8
Bezieht den Spaltennamen in INSERT-Anweisungen mit ein.
16 (Standardwert)
Verwendet parametrisierte Anweisungen.
24
Bezieht den Spaltennamen in INSERT-Anweisungen mit ein und verwendet parametrisierte Anweisungen.
64
Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
So würde beispielsweise ein aktiver Artikel, der parametrisierte Anweisungen verwendet, den Wert 17 in dieser Spalte aufweisen. Der Wert 0 gibt an, dass der Artikel nicht aktiv ist und keine zusätzlichen Eigenschaften definiert sind.
[ @source_owner =] 'source_owner'
Ist der Besitzer des Quellobjekts. source_owner ist vom Datentyp sysname. Der Standardwert ist NULL. source_owner muss für Oracle-Verleger angegeben werden.[ @sync_object_owner =] 'sync_object_owner'
Entspricht dem Namen des Eigentümers, der den veröffentlichten Artikel definiert. sync_object_owner ist vom Datentyp sysname. Der Standardwert ist NULL.[ @filter_owner =] 'filter_owner'
Ist der Eigentümer des Filters. filter_owner ist vom Datentyp sysname. Der Standardwert ist NULL.[ @source_object =] 'source_object'
Entspricht dem zu veröffentlichenden Datenbankobjekt. source_object ist vom Datentyp sysname. Der Standardwert ist NULL. Wenn source_table NULL ist, kann source_object nicht NULL sein.source_object sollte anstelle von source_table verwendet werden. Weitere Informationen zu den Objekttypen, die mithilfe der Momentaufnahme- oder der Transaktionsreplikation veröffentlicht werden können, finden Sie unter Veröffentlichen von Daten und Datenbankobjekten.[ @artid = ] article_ID OUTPUT
Entspricht der Artikel-ID des neuen Artikels. article_ID ist vom Datentyp int. Der Standardwert ist NULL, und es handelt sich um einen OUTPUT-Parameter.[ @auto_identity_range = ] 'auto_identity_range'
Aktiviert und deaktiviert auf Veröffentlichungsebene die automatische Handhabung von Identitätsbereichen zum Zeitpunkt der Veröffentlichungserstellung. auto_identity_range ist vom Datentyp nvarchar(5). Die folgenden Werte sind möglich:Wert
Beschreibung
true
Aktiviert die automatische Behandlung von Identitätsbereichen
false
Deaktiviert die automatische Behandlung von Identitätsbereichen
NULL (Standard)
Die Behandlung von Identitätsbereichen wird festgelegt durch identityrangemanagementoption.
Hinweis auto_identity_range wurde als veraltet markiert und steht nur aus Gründen der Abwärtskompatibilität zur Verfügung. Zur Angabe von Verwaltungsoptionen für Identitätsbereiche sollten Sie identityrangemanagementoption verwenden. Weitere Informationen finden Sie unter Replizieren von Identitätsspalten.
[ @pub_identity_range = ] pub_identity_range
Steuert die Bereichsgröße auf Verlegerebene, wenn für den Artikel identityrangemanagementoption auf auto oder auto_identity_range auf true festgelegt ist. pub_identity_range ist vom Datentyp bigint. Der Standardwert ist NULL. Wird nicht für Oracle-Verleger unterstützt.[ @identity_range = ] identity_range
Steuert die Bereichsgröße auf Abonnentenebene, wenn für den Artikel identityrangemanagementoption auf auto oder auto_identity_range auf true festgelegt ist. identity_range ist vom Datentyp bigint. Der Standardwert ist NULL. Wird verwendet, wenn auto_identity_range auf true festgelegt ist. Wird nicht für Oracle-Verleger unterstützt.[ @threshold = ] threshold
Der Prozentwert, der steuert, wann der Verteilungs-Agent einen neuen Identitätsbereich zuweist. Bei Verwendung des Prozentsatzes der Werte, die in threshold angegeben sind, erstellt der Verteilungs-Agent einen neuen Identitätsbereich. threshold ist vom Datentyp bigint. Der Standardwert ist NULL. Wird verwendet, wenn identityrangemanagementoption auf auto oder auto_identity_range auf true festgelegt ist. Wird nicht für Oracle-Verleger unterstützt.[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Bestätigt, dass durch die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise eine vorhandene Momentaufnahme ungültig wird. force_invalidate_snapshotist 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 durchgeführt.
Der Wert 1 gibt an, dass durch Hinzufügen eines Artikels die Momentaufnahme 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.
[ @use_default_datatypes = ] use_default_datatypes
Gibt an, ob die Zuordnungen des standardmäßigen Spaltendatentyps bei der Veröffentlichung eines Artikels von einem Oracle-Verleger verwendet werden. use_default_datatypes ist vom Datentyp bit. Der Standardwert ist 1.1 = die Standardartikel-Spaltenzuordnungen werden verwendet. Die Standard-Datentypzuordnungen können durch Ausführen von sp_getdefaultdatatypemapping angezeigt werden.
0 = benutzerdefinierte Artikelspaltenzuordnungen wurden definiert; deshalb wird sp_articleview nicht von sp_addarticle aufgerufen.
Wird use_default_datatypes auf den Wert 0 festgelegt, müssen Sie sp_changearticlecolumndatatype für jede Spaltenzuordnung, die von der Standardeinstellung zu einem anderen Wert geändert wird, einmal ausführen. Nach der Definition aller benutzerdefinierten Spaltenzuordnungen müssen Sie sp_articleview ausführen.
Hinweis Dieser Parameter sollte nur für Oracle-Verleger verwendet werden. Wird use_default_datatypes auf den Wert 0 für einen SQL Server-Verleger festgelegt, wird ein Fehler generiert.
[ @identityrangemanagementoption = ] identityrangemanagementoption
Gibt an, wie die Identitätsbereichsverwaltung für den Artikel gehandhabt wird. identityrangemanagementoption ist vom Datentyp nvarchar(10). Die folgenden Werte sind möglich:Wert
Beschreibung
none
Die Replikation führt keine explizite Identitätsbereichsverwaltung aus. Diese Option wird nur aus Gründen der Abwärtskompatibilität mit früheren Versionen von SQL Server verwendet. Ist für die Peer-Replikation nicht zulässig.
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 true ist. Die Standardeinstellung in einer Peer-zu-Peer-Topologie ist manual (auto_identity_range wird ignoriert).
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.
[ [ @publisher = ] 'publisher'
Gibt einen Nicht-SQL Server-Verleger an. publisher ist vom Datentyp sysname. Der Standardwert ist NULL.Hinweis publisher sollte nicht verwendet werden, wenn einem SQL Server-Verleger ein Artikel hinzugefügt wird.
[ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot'
Gibt an, ob replizierte Benutzertrigger beim Anwenden der Anfangsmomentaufnahme ausgeführt werden. fire_triggers_on_snapshot ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. true bedeutet, dass Benutzertrigger in einer replizierten Tabelle ausgeführt werden, wenn die Momentaufnahme übernommen wird. Für die Replikation von Triggern muss der Bitmaskenwert von schema_option den Wert 0x100 enthalten.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
sp_addarticle wird bei der Momentaufnahme- oder Transaktionsreplikation verwendet.
Standardmäßig werden bei der Replikation keine Spalten in der Quelltabelle veröffentlicht, wenn der Spaltendatentyp nicht von der Replikation unterstützt wird. Wenn eine solche Spalte veröffentlicht werden soll, muss sp_articlecolumn ausgeführt werden, 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. 16 muss in den status-Wert eingeschlossen werden.
Name und Besitzer der Ziel- und der Quelltabelle müssen übereinstimmen.
Der Artikel kann nicht horizontal oder vertikal gefiltert werden.
Die automatische Identitätsbereichsverwaltung wird nicht unterstützt. Für identityrangemanagementoption muss der Wert manual angegeben werden.
Ist eine timestamp-Spalte in der Tabelle vorhanden, muss 0x08 in schema_option eingeschlossen werden, damit die Spalte als timestamp repliziert wird.
Der Wert SQL kann nicht für ins_cmd, upd_cmd und del_cmd angegeben werden.
Weitere Informationen finden Sie unter Peer-zu-Peer-Transaktionsreplikation.
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.
Ist vertical_partition auf true festgelegt, verzögert sp_addarticle das Erstellen der Sicht, bis sp_articleview aufgerufen wird (nachdem die letzte Spalte mit sp_articlecolumn hinzugefügt wurde).
Wenn die Veröffentlichung Updateabonnements zulässt und die veröffentlichte Tabelle keine uniqueidentifier-Spalte aufweist, fügt sp_addarticle der Tabelle automatisch eine uniqueidentifier-Spalte hinzu.
Wenn Sie eine Replizierung auf einen Abonnenten ausführen, der nicht als Instanz von SQL Server fungiert (heterogene Replikation), werden für INSERT-, UPDATE- und DELETE-Befehle nur Transact-SQL-Anweisungen 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. Damit Sie dieses Problem vermeiden, bevor Sie einer Peer-zu-Peer-Veröffentlichung einen Artikel hinzufügen, verwenden Sie den Replikationsmonitor, um den Protokolllese-Agent auf dem Knoten zu beenden, auf dem Sie den Artikel hinzufügen möchten. Starten Sie den Protokolllese-Agent neu, nachdem Sie den Artikel hinzugefügt haben.
Wenn @del\_cmd = 'NONE' oder @ins\_cmd = 'NONE' festgelegt wird, kann auch die Weitergabe von UPDATE-Befehlen beeinträchtigt werden, indem diese Befehle bei einem begrenzten Update nicht gesendet werden. (Ein begrenztes Update ist eine Art von UPDATE-Anweisung vom Verleger, die als DELETE/INSERT-Paar auf dem Abonnenten repliziert wird).
Default Schema Options
In dieser Tabelle wird der durch die Replikation festgelegte Standardwert beschrieben, wenn schema_options nicht vom Benutzer angegeben wird. Dabei hängt dieser Wert vom Replikationstyp (oben angezeigt) und vom Artikeltyp (in der ersten Spalte angezeigt) ab.
Artikeltyp |
Replikationstyp |
|
---|---|---|
|
Transaktionsreplikation |
Snapshot |
aggregate schema only |
0x01 |
0x01 |
func schema only |
0x01 |
0x01 |
indexed view schema only |
0x01 |
0x01 |
indexed view logbased |
0x30F3 |
0x3071 |
indexed view logbase manualboth |
0x30F3 |
0x3071 |
indexed view logbased manualfilter |
0x30F3 |
0x3071 |
indexed view logbased manualview |
0x30F3 |
0x3071 |
logbased |
0x30F3 |
0x3071 |
logbased manualfilter |
0x30F3 |
0x3071 |
logbased manualview |
0x30F3 |
0x3071 |
proc exec |
0x01 |
0x01 |
proc schema only |
0x01 |
0x01 |
serializable proc exec |
0x01 |
0x01 |
view schema only |
0x01 |
0x01 |
Hinweis |
---|
Wurde das verzögerte Update für eine Veröffentlichung aktiviert, wird der schema_option-Wert 0x80 dem Standardwert (siehe Tabelle) hinzugefügt. Der schema_option-Standardwert für eine Nicht-SQL Server-Veröffentlichung ist 0x050D3. |
Gültige Schemaoptionen
In dieser Tabelle werden die zulässigen Werte von schema_option beschrieben, die auf dem Replikationstyp basieren, der oben angezeigt wird, sowie auf dem Artikeltyp, der in der ersten Spalte angezeigt wird.
Artikeltyp |
Replikationstyp |
|
---|---|---|
|
Transaktionsreplikation |
Snapshot |
logbased |
Alle Optionen |
Alle Optionen außer 0x02 |
logbased manualfilter |
Alle Optionen |
Alle Optionen außer 0x02 |
logbased manualview |
Alle Optionen |
Alle Optionen außer 0x02 |
indexed view logbased |
Alle Optionen |
Alle Optionen außer 0x02 |
indexed view logbased manualfilter |
Alle Optionen |
Alle Optionen außer 0x02 |
indexed view logbased manualview |
Alle Optionen |
Alle Optionen außer 0x02 |
indexed view logbase manualboth |
Alle Optionen |
Alle Optionen außer 0x02 |
proc exec |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
serializable proc exec |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
proc schema only |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
view schema only |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 und 0x80000000 |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 und 0x80000000 |
func schema only |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
indexed view schema only |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 und 0x80000000 |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 und 0x80000000 |
Hinweis |
---|
Für Veröffentlichungen, die verzögerte Updates über eine Warteschlange zulassen, müssen die schema_option-Werte 0x8000 und 0x80 aktiviert werden. Die unterstützten schema_option-Werte für Nicht-SQL Server-Veröffentlichungen sind: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 und 0X8000. |
Beispiel
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 der festen Datenbankrolle db_owner können sp_addarticle ausführen.
Siehe auch
Verweis
sp_articlecolumn (Transact-SQL)
sp_articlefilter (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
Gespeicherte Replikationsprozeduren (Transact-SQL)