sp_changearticle (Transact-SQL)
Ändert die Eigenschaften eines Artikels in einer Transaktions- oder Snapshotveröffentlichung. Diese gespeicherte Prozedur wird beim Verleger mit der Veröffentlichungsdatenbank ausgeführt.
Syntax
sp_changearticle [ [@publication= ] 'publication' ]
[ , [ @article= ] 'article' ]
[ , [ @property= ] 'property' ]
[ , [ @value= ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] 'publisher' ]
Argumente
[ @publication=] 'publication'
Der Name der Veröffentlichung, die den Artikel enthält. publication ist ein Wert vom Datentyp sysname. Der Standardwert ist NULL.[ @article=] 'article'
Der Name des Artikels, dessen Eigenschaft geändert werden soll. article ist ein Wert vom Datentyp sysname. Der Standardwert ist NULL.[ @property=] 'property'
Die zu ändernde Artikeleigenschaft. property ist ein Wert vom Datentyp nvarchar(100).[ @value=] 'value'
Der neue Wert der Artikeleigenschaft. value ist vom Datentyp nvarchar(255).Diese Tabelle beschreibt die Eigenschaften von Artikeln und die Werte für diese Eigenschaften.
Eigenschaft
Werte
Beschreibung
creation_script
Pfad und Name eines Artikel-Schemaskripts, mit dem Zieltabellen erstellt werden. Der Standardwert ist NULL.
del_cmd
Die auszuführende DELETE-Anweisung; andernfalls wird die Löschoperation aus dem Protokoll hergeleitet.
description
Ein neuer Beschreibungseintrag für den Artikel.
dest_object
Dieser Parameter wird aus Gründen der Abwärtskompatibilität bereitgestellt. Verwenden Sie dest_table.
dest_table
Die neue Zieltabelle.
destination_owner
Name des Besitzers des Zielobjekts.
Filter
Die neue gespeicherte Prozedur, mit der die Tabelle gefiltert werden soll (horizontales Filtern). Der Standardwert ist NULL. Kann bei der Peer-to-Peer-Replikation für Veröffentlichungen nicht geändert werden.
fire_triggers_on_snapshot
true
Replizierte Benutzertrigger werden ausgeführt, wenn der Anfangssnapshot angewendet wird.
HinweisDamit Trigger repliziert werden, muss der Bitmaskenwert von schema_option den Wert 0x100 enthalten.false
Replizierte Benutzertrigger werden nicht ausgeführt, wenn der Anfangssnapshot angewendet wird.
identity_range
Steuert die Größe der zugeordneten Identitätsbereiche, die am Abonnent zugeordnet wurden. Wird für die Peer-to-Peer-Replikation nicht unterstützt.
ins_cmd
Die auszuführende INSERT-Anweisung; andernfalls wird die Operation aus dem Protokoll hergeleitet.
pre_creation_cmd
Ein Vorabbefehl, mit dem die Zieltabelle entfernt, gelöscht oder abgeschnitten werden kann, bevor die Synchronisierung angewendet wird.
none
Verwendet keinen Befehl.
drop
Entfernt die Zieltabelle.
delete
Löscht die Zieltabelle.
truncate
Schneidet die Zieltabelle ab.
pub_identity_range
Steuert die Größe der zugeordneten Identitätsbereiche, die am Abonnent zugeordnet wurden. Wird für die Peer-to-Peer-Replikation nicht unterstützt.
schema_option
Gibt das Bitmuster der Option zur Schemagenerierung für den angegebenen Artikel an. schema_option ist vom Datentyp binary(8). Weitere Informationen finden Sie im Abschnitt mit den Hinweisen weiter unten in diesem Thema.
0x00
Beschreibt die Skripterstellung durch den Snapshot-Agent.
0x01
Generiert die Objekterstellung (CREATE TABLE, CREATE PROCEDURE usw.).
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.
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 für Oracle-Verleger nicht unterstützt.
0x40
Generiert entsprechende nicht gruppierte Indizes.
0x80
Schließt die deklarative referenzielle Integrität für die Primärschlüssel ein.
0x100
Repliziert Benutzertrigger für einen Tabellenartikel, wenn definiert.
0x200
Repliziert FOREIGN KEY-Einschränkungen. Wenn die Tabelle, auf die verwiesen wird, nicht Teil einer Veröffentlichung ist, werden für eine veröffentlichte Tabelle keine FOREIGN KEY-Einschränkungen repliziert.
0x400
Repliziert CHECK-Einschränkungen.
0x800
Repliziert Standards.
0x1000
Repliziert die Sortierung auf Spaltenebene.
0x2000
Repliziert erweiterte Eigenschaften, die dem Quellobjekt des veröffentlichten Artikels zugeordnet sind.
0x4000
Repliziert eindeutige Schlüssel, wenn auf einem Tabellenartikel definiert.
0x8000
Repliziert den Primärschlüssel und eindeutige Schlüssel eines Tabellenartikels als Einschränkungen mithilfe von ALTER TABLE-Anweisungen.
HinweisDiese Option wurde als veraltet markiert. Verwenden Sie stattdessen 0x80 und 0x4000.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. Informationen zum Zuordnen dieser Typen finden Sie im Abschnitt über die Zuordnung neuer Datentypen für frühere Versionen unter Verwenden mehrerer Versionen von SQL Server in einer Replikationstopologie.
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. Informationen zum Zuordnen dieser Typen finden Sie im Abschnitt über die Zuordnung neuer Datentypen für frühere Versionen unter Verwenden mehrerer Versionen von SQL Server in einer Replikationstopologie.
0x400000000
Repliziert die Komprimierungsoption für Daten und Indizes. Weitere Informationen finden Sie unter Erstellen komprimierter Tabellen und Indizes.
0x800000000
Legen Sie diese Option fest, um FILESTREAM-Daten in einer eigenen Dateigruppe auf dem Abonnenten zu speichern. Wenn diese Option nicht festgelegt wird, werden FILESTREAM-Daten in der Standarddateigruppe gespeichert. Bei der Replikation werden keine Dateigruppen erstellt. Daher müssen Sie beim Festlegen dieser Option die Dateigruppe erstellen, bevor Sie den Snapshot auf dem Abonnenten anwenden. Weitere Informationen zum Erstellen von Objekten vor dem Anwenden des Snapshots finden Sie unter Ausführen von Skripts vor und nach dem Anwenden des Snapshots.
Siehe die verwandte Option 0x100000000.
0x1000000000
Konvertiert CLR-benutzerdefinierte Typen (Common Language Runtime User-Defined Type, CLR UDT) 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 Richtlinien für den Entwurf gefilterter Indizes.
0x8000000000
Konvertiert den geography-Datentyp und den geometry-Datentyp in varbinary(max), sodass Spalten dieser Typen auf Abonnenten repliziert werden können, auf denen SQL Server 2005 ausgeführt wird.
0x10000000000
Repliziert Indizes für Spalten vom Typ geography und geometry.
0x20000000000
Repliziert das SPARSE-Attribut für Spalten. Weitere Informationen zu diesem Attribut finden Sie unter Verwenden von Spalten mit geringer Dichte.
status
Gibt den neuen Status der Eigenschaft an.
dts horizontal partitions
Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
include column names
Spaltennamen sind in der replizierten INSERT-Anweisung enthalten.
no column names
Spaltennamen sind nicht in der replizierten INSERT-Anweisung enthalten.
no dts horizontal partitions
Die horizontale Partition für den Artikel wird nicht durch ein transformierbares Abonnement definiert.
none
Löscht alle Statusoptionen in der sysarticles-Tabelle und kennzeichnet den Artikel als inaktiv.
Parameter
Änderungen werden an den Abonnenten mit parametrisierten Befehlen weitergegeben. Dies ist die Standardeinstellung für einen neuen Artikel.
string literals
Änderungen werden an den Abonnenten mit Werten von Literalzeichenfolgen weitergegeben.
sync_object
Der Name der Tabelle oder Sicht, mit der eine Synchronisierungsausgabedatei erstellt wird. Die Standardeinstellung ist NULL. Wird für Oracle-Verleger nicht unterstützt.
tablespace
Gibt den Tabellenbereich an, der von der Protokollierungstabelle für einen Artikel verwendet wird, der von einer Oracle-Datenbank veröffentlicht wird. Weitere Informationen finden Sie unter Verwalten von Oracle-Tabellenbereichen.
threshold
Der Prozentsatzwert, der steuert, wann der Verteilungs-Agent einen neuen Identitätsbereich zuweist. Wird für die Peer-to-Peer-Replikation nicht unterstützt.
type
Wird für Oracle-Verleger nicht unterstützt.
logbased
Protokollbasierter Artikel.
logbased manualboth
Protokollbasierter Artikel mit manuell erstelltem Filter und manuell erstellter Sicht. Diese Option erfordert, dass auch die Eigenschaften sync_object und filter festgelegt sind. Wird von Oracle-Verlegern nicht unterstützt.
logbased manualfilter
Protokollbasierter Artikel mit manuell erstelltem Filter. Diese Option erfordert, dass auch die Eigenschaften sync_object und filter festgelegt sind. Wird von Oracle-Verlegern nicht unterstützt.
logbased manualview
Protokollbasierter Artikel mit manuell erstellter Sicht. Diese Option erfordert, dass auch die sync_object-Eigenschaft festgelegt ist. Wird von Oracle-Verlegern nicht unterstützt.
indexed viewlogbased
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 viewlogbased manualboth
Artikel für protokollbasierte indizierte Sicht mit manuell erstelltem Filter und manuell erstellter Sicht. Diese Option erfordert, dass auch die Eigenschaften sync_object und filter festgelegt sind. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Wird von Oracle-Verlegern nicht unterstützt.
indexed viewlogbased manualfilter
Artikel für protokollbasierte indizierte Sicht mit manuell erstelltem Filter. Diese Option erfordert, dass auch die Eigenschaften sync_object und filter festgelegt sind. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Wird von Oracle-Verlegern nicht unterstützt.
indexed viewlogbased manualview
Artikel für protokollbasierte indizierte Sicht mit manuell erstellter Sicht. Diese Option erfordert, dass auch die sync_object-Eigenschaft festgelegt ist. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Wird von Oracle-Verlegern nicht unterstützt.
upd_cmd
Die auszuführende UPDATE-Anweisung; andernfalls wird die Operation aus dem Protokoll hergeleitet.
NULL
NULL
Gibt eine Liste von Artikeleigenschaften zurück, die geändert werden können.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion einen vorhandenen Snapshot für ungültig erklären kann. force_invalidate_snapshot ist ein Wert vom Datentyp bit. Der Standardwert ist 0.Der Wert 0 gibt an, dass Änderungen an dem Artikel nicht bewirken, dass der Snapshot ungültig wird. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen einen neuen Snapshot erfordern, tritt ein Fehler auf, und es werden keine Änderungen durchgeführt.
Der Wert 1 gibt an, dass der Snapshot durch Ändern des Artikels ungültig werden kann. Wenn Abonnements vorhanden sind, die einen neuen Snapshot erfordern, wird mit diesem Wert die Berechtigung erteilt, den vorhandenen Snapshot als veraltet zu markieren und einen neuen Snapshot zu generieren.
Weitere Informationen zu den Eigenschaften, deren Änderung zur Folge hat, dass ein neuer Snapshot erstellt werden muss, finden Sie im Abschnitt zu den Hinweisen.
[ **@force_reinit_subscription=]**force_reinit_subscription
Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion die erneute Initialisierung vorhandener Abonnements erfordern kann. force_reinit_subscription ist vom Datentyp bit. Der Standardwert ist 0.Der Wert 0 gibt an, dass Änderungen an dem Artikel nicht bewirken, dass das Abonnement neu initialisiert wird. Wenn die gespeicherte Prozedur erkennt, dass die Änderung die erneute Initialisierung von vorhandenen Abonnements erfordert, tritt ein Fehler auf, und es werden keine Änderungen durchgeführt.
Der Wert 1 gibt an, dass Änderungen am Artikel die erneute Initialisierung vorhandener Abonnements bewirken. Außerdem wird mit diesem Wert die Berechtigung zur erneuten Initialisierung des Abonnements erteilt.
Weitere Informationen zu den Eigenschaften, deren Änderung zur Folge hat, dass alle vorhandenen Abonnements neu initialisiert werden müssen, finden Sie im Abschnitt zu den Hinweisen.
[ @publisher= ] 'publisher'
Gibt einen Nicht-SQL Server-Verleger an. publisher ist ein Wert vom Datentyp sysname und besitzt den Standardwert NULL.Hinweis publisher sollte nicht beim Ändern von Artikeleigenschaften für einen SQL Server-Verleger verwendet werden.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
sp_changearticle wird bei der Snapshot- und Transaktionsreplikation verwendet.
Wenn ein Artikel zu einer Veröffentlichung gehört, die die Peer-to-Peer-Transaktionsreplikation unterstützt, können Sie nur die Eigenschaften von description, ins_cmd, upd_cmd und del_cmd ändern.
Das Ändern einer der folgenden Eigenschaften erfordert die Generierung eines neuen Snapshots, und Sie müssen einen Wert von 1 für den force_invalidate_snapshot-Parameter angeben:
del_cmd
dest_table
destination_owner
ins_cmd
pre_creation_cmd
schema_options
upd_cmd
Für das Ändern einer der folgenden Eigenschaften müssen vorhandene Abonnements neu initialisiert werden. Außerdem müssen Sie den Wert 1 für den force_reinit_subscription-Parameter angeben.
del_cmd
dest_table
destination_owner
Filter
ins_cmd
status
upd_cmd
Innerhalb einer vorhandenen Veröffentlichung können Sie mithilfe von sp_changearticle einen Artikel ändern, ohne die gesamte Veröffentlichung löschen und erneut erstellen zu müssen.
Hinweis |
---|
Bei einer Änderung des Werts von schema_option führt das System kein bitweises Update aus. Das bedeutet, dass beim Festlegen von schema_option mit sp_changearticle möglicherweise vorhandene Biteinstellungen deaktiviert werden. Um die vorhandenen Einstellungen beizubehalten, sollten Sie & (Bitweises AND) zwischen dem festzulegenden Wert und dem aktuellen Wert von schema_option ausführen. Dieser kann durch Ausführen von sp_helparticle bestimmt werden. |
Gültige Schemaoptionen
In der folgenden 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 |
|
---|---|---|
|
Transaktion |
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 mit verzögerter Aktualisierung über eine Warteschlange muss für schema_option der Wert 0x80 aktiviert werden. Die unterstützten schema_option-Werte für Nicht-SQL Server-Veröffentlichungen sind: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000 und 0x4000. |
Beispiel
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));
-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2008R2]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_changearticle ausführen.
Siehe auch