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_snapshotErkennt 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)