sp_changearticle (Transact-SQL)
Gilt für:SQL ServerAzure SQL Managed Instance
Ändert die Eigenschaften eines Artikels in einer Transaktions- oder Momentaufnahmeveröffentlichung. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
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'
Ist der Name der Publikation, die den Artikel enthält. publikation ist sysname, mit einem Standardwert von NULL.
[ @article = ] 'article'
Ist der Name des Artikels, dessen Eigenschaft geändert werden soll. Der Artikel ist "sysname" mit der Standardeinstellung NULL.
[ @property = ] 'property'
Ist eine Artikeleigenschaft, die geändert werden soll. property is nvarchar(100).
[ @value = ] 'value'
Ist der neue Wert der Artikeleigenschaft. wert ist 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 Artikelschemaskripts, 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. | |
Beschreibung | 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-zu-Peer-Replikation für Veröffentlichungen nicht geändert werden. | |
fire_triggers_on_Momentaufnahme | true | Replizierte Benutzertrigger werden ausgeführt, wenn die Anfangsmomentaufnahme angewendet wird. Hinweis: Damit Trigger repliziert werden können, muss der Bitmaskenwert schema_option den Wert 0x100 enthalten. |
false | Replizierte Benutzertrigger werden nicht ausgeführt, wenn die Anfangsmomentaufnahme angewendet wird. | |
identity_range | Steuert die Größe der zugeordneten Identitätsbereiche, die am Abonnent zugeordnet wurden. Wird für die Peer-zu-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. | |
Verwerfen | Entfernt die Zieltabelle. | |
Löschen | 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-zu-Peer-Replikation nicht unterstützt. | |
schema_option | Gibt die Bitmap der Schemagenerierungsoption für den angegebenen Artikel an. schema_option ist binary(8). Weitere Informationen finden Sie im Abschnitt mit den Hinweisen weiter unten in diesem Thema. | |
0x00 | Beschreibt die Skripterstellung durch den Momentaufnahme-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 | Replizieren von Zeitstempelspalten . Wenn nicht festgelegt, werden Zeitstempelspalten als binär 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. Diese Option 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. Hinweis: Diese Option ist veraltet. Verwenden Sie stattdessen 0x80 und 0x4000 . |
|
0x10000 | Repliziert CHECK-Einschränkungen als NOT FOR REPLICATION, sodass die Einschränkungen während der Synchronisierung nicht erzwungen werden. | |
0x20000 | Repliziert FOREIGN KEY-Einschränkungen als NOT FOR REPLICATION, sodass diese Einschränkungen bei der Synchronisierung nicht erzwungen werden. | |
0x40000 | Repliziert Dateigruppen, die mit einer partitionierten Tabelle oder einem Index verbunden sind. | |
0x80000 | Repliziert das Partitionsschema für eine partitionierte Tabelle. | |
0x100000 | Repliziert das Partitionsschema für einen partitionierten Index. | |
0x200000 | Repliziert Tabellenstatistiken. | |
0x400000 | 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 | 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 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 in 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 Data Compression. | |
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, bevor Sie die Momentaufnahme anwenden, finden Sie unter Execute Scripts Before and After the Snapshot Is Applied. Siehe verwandte Option 0x100000000. |
|
0x1000000000 | Wandelt benutzerdefinierte ClR-Typen (Common Language Runtime, Common Language Runtime, UDTs) um, die größer als 8000 Byte sind, in varbinary(max) um, sodass Spalten vom Typ UDT in Abonnenten repliziert werden können, die SQL Server 2005 (9.x) ausführen. | |
0x2000000000 | Wandelt den hierarchyid-Datentyp in varbinary(max) um, sodass Spalten der Typhierarchie-ID in Abonnenten repliziert werden können, die SQL Server 2005 (9.x) ausführen. Weitere Informationen zur Verwendung von Hierarchie-ID-Spalten in replizierten Tabellen finden Sie 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 "Sparse Columns". | |
0x40000000000 | Aktivieren Sie skripting 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. | |
status | Gibt den neuen Status der Eigenschaft an. | |
dts horizontale Partitionen | Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. | |
Spaltennamen einschließen | Spaltennamen sind in der replizierten INSERT-Anweisung enthalten. | |
keine Spaltennamen | Spaltennamen sind nicht in der replizierten INSERT-Anweisung enthalten. | |
keine horizontalen Dts-Partitionen | Die horizontale Partition für den Artikel wird nicht durch ein transformierbares Abonnement definiert. | |
none | Löscht alle Statusoptionen in der Sysarticles-Tabelle und markiert den Artikel als inaktiv. | |
parameters | Änderungen werden an den Abonnenten mit parametrisierten Befehlen weitergegeben. Dies ist die Standardeinstellung für einen neuen Artikel. | |
Zeichenfolgenliterale | Änderungen werden an den Abonnenten mit Werten von Literalzeichenfolgen weitergegeben. | |
sync_object | Der Name der Tabelle oder Sicht, mit der eine Synchronisierungsausgabedatei erstellt wird. Der -Standardwert ist NULL. Diese Option 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 Prozentwert, der steuert, wann der Verteilungs-Agent einen neuen Identitätsbereich zuweist. Wird für die Peer-zu-Peer-Replikation nicht unterstützt. | |
type | Diese Option wird für Oracle-Verleger nicht unterstützt. | |
Logbased | Protokollbasierter Artikel. | |
logbased manualboth | Protokollbasierter Artikel mit manuell erstelltem Filter und manuell erstellter Sicht. Für diese Option müssen auch die sync_object- und Filtereigenschaften festgelegt werden. Diese Option wird für Oracle-Verleger nicht unterstützt. | |
logbased manualfilter | Protokollbasierter Artikel mit manuell erstelltem Filter. Für diese Option müssen auch die sync_object- und Filtereigenschaften festgelegt werden. Diese Option wird für Oracle-Verleger nicht unterstützt. | |
logbased manualview | Protokollbasierter Artikel mit manuell erstellter Sicht. Für diese Option muss auch die sync_object-Eigenschaft festgelegt werden. Diese Option wird für Oracle-Verleger nicht unterstützt. | |
Indizierte Ansichtsdatenbank | 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. | |
Indiziertes Viewlogbased Manualboth | Artikel für protokollbasierte indizierte Sicht mit manuell erstelltem Filter und manuell erstellter Sicht. Für diese Option müssen auch die sync_object- und Filtereigenschaften festgelegt werden. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Diese Option wird für Oracle-Verleger nicht unterstützt. | |
Indizierter manueller Viewlogbased-Manuellfilter | Artikel für protokollbasierte indizierte Sicht mit manuell erstelltem Filter. Für diese Option müssen auch die sync_object - und Filtereigenschaften festgelegt werden. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Diese Option wird für Oracle-Verleger nicht unterstützt. | |
Indizierte Ansichtsansicht | Artikel für protokollbasierte indizierte Sicht mit manuell erstellter Sicht. Für diese Option muss auch die sync_object-Eigenschaft festgelegt werden. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Diese Option wird für Oracle-Verleger 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
Erkennt an, dass die von dieser gespeicherten Prozedur ausgeführte Aktion eine vorhandene Momentaufnahme ungültig macht. force_invalidate_Momentaufnahme ist ein bisschen mit der Standardeinstellung 0.
0 gibt an, dass Änderungen am Artikel nicht dazu führen, dass die Momentaufnahme ungültig sind. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen eine neue Momentaufnahme erfordern, tritt ein Fehler auf und es werden keine Änderungen vorgenommen.
1 gibt an, dass Änderungen am Artikel dazu führen können, dass die Momentaufnahme ungültig sind, und wenn es vorhandene Abonnements gibt, die eine neue Momentaufnahme erfordern, die Berechtigung erteilt, dass die vorhandenen Momentaufnahme als veraltet gekennzeichnet werden und eine neue Momentaufnahme generiert wird.
Weitere Informationen zu den Eigenschaften, bei deren Änderung die Generierung einer neuen Momentaufnahme erforderlich ist, finden Sie im Abschnitt "Hinweise".
[ @force_reinit_subscription = ]force_reinit_subscription_
Erkennt an, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise erfordert, dass vorhandene Abonnements erneut initialisiert werden. force_reinit_subscription ist ein bisschen mit der Standardeinstellung 0.
0 gibt an, dass Änderungen am Artikel nicht dazu führen, dass das Abonnement erneut initialisiert wird. Wenn die gespeicherte Prozedur erkennt, dass die Änderung die Neuinitialisierung vorhandener Abonnements erfordert, tritt ein Fehler auf, und es werden keine Änderungen durchgeführt.
1 gibt an, dass Änderungen am Artikel dazu führen, dass vorhandene Abonnements erneut initialisiert werden, und erteilt die Berechtigung für die Erneute Initialisierung des Abonnements.
Weitere Informationen zu den Eigenschaften, bei deren Änderung die erneute Initialisierung aller vorhandenen Abonnements erforderlich ist, finden Sie im Abschnitt "Hinweise".
[ @publisher = ] 'publisher'
Gibt einen Nicht-SQL Server-Herausgeber an. Publisher ist "sysname" mit dem Standardwert NULL.
Hinweis
Publisher sollte nicht verwendet werden, wenn Artikeleigenschaften in einem SQL Server-Publisher geändert werden.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
sp_changearticle wird in Momentaufnahme Replikation und Transaktionsreplikation verwendet.
Wenn ein Artikel zu einer Publikation gehört, die peer-to-Peer-Transaktionsreplikation unterstützt, können Sie nur die Beschreibung, ins_cmd, upd_cmd und del_cmd Eigenschaften ändern.
Zum Ändern einer der folgenden Eigenschaften muss eine neue Momentaufnahme generiert werden, und Sie müssen einen Wert von 1 für den parameter force_invalidate_Momentaufnahme angeben:
del_cmd
dest_table
destination_owner
ins_cmd
pre_creation_cmd
schema_options
upd_cmd
Wenn Sie eine der folgenden Eigenschaften ändern, müssen vorhandene Abonnements erneut initialisiert werden, und Sie müssen für den Parameter force_reinit_subscription einen Wert von 1 angeben.
del_cmd
dest_table
destination_owner
filter
ins_cmd
status
upd_cmd
Innerhalb einer vorhandenen Publikation können Sie sp_changearticle verwenden, um einen Artikel zu ändern, ohne die gesamte Publikation ablegen und erneut erstellen zu müssen.
Hinweis
Beim Ändern des Werts von schema_option führt das System keine bitweise Aktualisierung durch. Dies bedeutet, dass vorhandene Biteinstellungen möglicherweise deaktiviert werden, wenn Sie schema_option mithilfe von sp_changearticle festlegen. Um die vorhandenen Einstellungen beizubehalten, sollten Sie | (Bitweise ODER) zwischen dem Wert, den Sie festlegen, und dem aktuellen Wert von schema_option, der durch Ausführen sp_helparticle bestimmt werden kann.
Valid Schema Options
In der folgenden Tabelle werden die zulässigen Werte schema_option basierend auf dem Replikationstyp (oben dargestellt) und dem Artikeltyp (unten in der ersten Spalte) beschrieben.
Artikeltyp | Replikationstyp – Transaktionstyp | Replikationstyp – Momentaufnahme |
---|---|---|
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, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
serialisable 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 |
Nur proc-Schema | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
Nur Ansichtsschema | 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 |
Nur Func-Schema | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 und 0x80000000 |
Nur indiziertes Ansichtsschema | 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 das Aktualisieren von Publikationen in die Warteschlange muss der schema_option Wert von 0x80 aktiviert sein. Die unterstützten schema_option Werte für Nicht-SQL Server-Publikationen 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 [AdventureWorks2022]
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 db_owner feste Datenbankrolle können sp_changearticle ausgeführt werden.
Weitere Informationen
Anzeigen und Ändern von Artikeleigenschaften
Ändern von Veröffentlichungs- und Artikeleigenschaften
sp_addarticle (Transact-SQL)
sp_articlecolumn (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für