Teilen über


sp_changearticle (Transact-SQL)

Gilt für: SQL Server Azure 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 = ] N'publication' ]
    [ , [ @article = ] N'article' ]
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

Argumente

[ @publication = ] N'Publikation'

Der Name der Publikation, die den Artikel enthält. @publication ist "sysname" mit der Standardeinstellung "NULL.

[ @article = ] N'article'

Der Name des Artikels, dessen Eigenschaft geändert werden soll. @article ist "sysname" mit der Standardeinstellung "NULL.

[ @property = ] N'property'

Eine zu ändernde Artikeleigenschaft. @property ist nvarchar(100), wobei die Standardeinstellung istNULL.

[ @value = ] N'value'

Der neue Wert der Artikeleigenschaft. @value ist nvarchar(255), mit einem Standardwert von NULL.

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 DELETE auszuführende Anweisung; andernfalls wird sie aus dem Protokoll erstellt.
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 für Publikationen in peer-to-Peer-Replikation nicht geändert werden.
fire_triggers_on_snapshot true Replizierte Benutzertrigger werden ausgeführt, wenn die Anfangsmomentaufnahme angewendet wird.

Hinweis: Damit Trigger repliziert werden können, muss der Bitmaskenwert schema_option des Werts 0x100enthalten sein.
false Replizierte Benutzertrigger werden nicht ausgeführt, wenn die anfängliche Momentaufnahme 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 INSERT auszuführende Anweisung; andernfalls wird sie aus dem Protokoll erstellt.
pre_creation_cmd Precreation command that can drop, delete, or truncate the destination table before sync is applied.
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-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 Hinweise.
0x00 Beschreibt die Skripterstellung durch den Momentaufnahme-Agent.
0x01 Generiert die Objekterstellung (CREATE TABLE, CREATE PROCEDUREusw.).
0x02 Generiert die gespeicherten Prozeduren, die Änderungen für den Artikel weitergeben (falls definiert).
0x04 Identitätsspalten werden mithilfe der IDENTITY Eigenschaft skripted.
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 für eine UDT-Spalte eine CHECK DEFAULT Einschränkung vorhanden ist, wenn eine UDT-Spalte Teil des Primärschlüssels ist oder 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 FOREIGN KEY Repliziert Einschränkungen. Wenn die referenzierte Tabelle nicht Teil einer Publikation ist, werden alle FOREIGN KEY Einschränkungen für eine veröffentlichte Tabelle nicht repliziert.
0x400 CHECK Repliziert 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 Primärschlüssel und eindeutige Schlüssel in einem Tabellenartikel als Einschränkungen mithilfe von ALTER TABLE Anweisungen.

Hinweis: Diese Option ist veraltet. Verwenden Sie stattdessen 0x80 und 0x4000.
0x10000 CHECK Repliziert Einschränkungen, NOT FOR REPLICATION sodass die Einschränkungen während der Synchronisierung nicht erzwungen werden.
0x20000 FOREIGN KEY Repliziert Einschränkungen, NOT FOR REPLICATION sodass die Einschränkungen während der Synchronisierung nicht erzwungen werden.
0x40000 Repliziert Dateigruppen, die mit einer partitionierten Tabelle oder einem Index verbunden sind.
0x80000 Repliziert das Partitionsschema für eine partitionierte Tabelle.
0x100000 Repliziert das Partitionsschema für einen partitionierten Index.
0x200000 Repliziert Tabellenstatistiken.
0x400000 Standardbindungen.
0x800000 Regelbindungen.
0x1000000 Volltextindex.
0x2000000 XML-Schemaauflistungen, die an XML-Spalten gebunden sind, werden nicht repliziert.
0x4000000 Repliziert Indizes in XML-Spalten .
0x8000000 Legt Schemas an, die auf dem Abonnent noch nicht vorhanden sind.
0x10000000 Konvertiert XML-Spalten in "ntext" für den Abonnenten.
0x20000000 Konvertiert große Objektdatentypen (nvarchar(max), varchar(max) und varbinary(max)), die in SQL Server 2005 (9.x) eingeführt wurden, in Datentypen, die in SQL Server 2000 (8.x) unterstützt werden.
0x40000000 Berechtigungen für die Replikation.
0x80000000 Versuchen Sie, Abhängigkeiten von Objekten abzulegen, die nicht Teil der Publikation sind.
0x100000000 Verwenden Sie diese Option, um das FILESTREAM Attribut zu replizieren, wenn es in varbinary(max) -Spalten angegeben ist. Geben Sie diese Option nicht an, wenn Sie Tabellen in SQL Server 2005 (9.x)-Abonnenten replizieren. Das Replizieren von Tabellen mit FILESTREAM-Spalten auf SQL Server 2000 (8.x) Abonnenten wird unabhängig davon, wie diese Schemaoption festgelegt wird, nicht unterstützt.

Siehe verwandte Option 0x800000000.
0x200000000 Konvertiert Datums- und Uhrzeitdatentypen (Datum, Uhrzeit, Datetimeoffset und Datetime2), die in SQL Server 2008 (10.0.x) eingeführt wurden, in Datentypen, die in früheren Versionen von SQL Server unterstützt werden.
0x400000000 Repliziert die Komprimierungsoption für Daten und Indizes. Weitere Informationen finden Sie unter Datenkomprimierung.
0x800000000 Legen Sie diese Option fest, um FILESTREAM-Daten in einer eigenen Dateigruppe auf dem Abonnenten zu speichern. Wenn diese Option nicht festgelegt ist, werden FILESTREAM-Daten in der Standarddateigruppe gespeichert. Die Replikation erstellt keine Dateigruppen; Wenn Sie diese Option festlegen, müssen Sie daher die Dateigruppe erstellen, bevor Sie die Momentaufnahme beim Abonnenten anwenden. Weitere Informationen zum Erstellen von Objekten, bevor Sie die Momentaufnahme anwenden, finden Sie unter Execute Scripts Before and After the Snapshot Is Applied.

Siehe verwandte Option 0x100000000.
0x1000000000 Wandelt benutzerdefinierte Typen (Common Language Runtime, CLR) um, die größer als 8.000 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 in der Referenz zur Hierarchie-Datentypmethode.
0x4000000000 Repliziert die gefilterten Indizes in der Tabelle. Weitere Informationen zu gefilterten Indizes finden Sie unter Erstellen gefilterter Indizes.
0x8000000000 Wandelt die Geografie - und Geometriedatentypen in varbinary(max) um, sodass Spalten dieser Typen in Abonnenten repliziert werden können, die SQL Server 2005 (9.x) ausführen.
0x10000000000 Repliziert Indizes für Spalten vom Typ "Geografie " und "Geometrie".
0x20000000000 Repliziert das SPARSE Attribut für Spalten. Weitere Informationen zu diesem Attribut finden Sie unter Verwenden von Spalten mit geringem Wert.
0x40000000000 Aktivieren Sie skripting durch den Snapshot-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 horizontal partitions Nur für Informationszwecke identifiziert. Wird 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 in der replizierten INSERT Anweisung nicht 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 markiert den Artikel als inaktiv.
parameters Ä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. 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 Sie auch die sync_object Eigenschaften filter festlegen. Diese Option wird für Oracle-Verleger nicht unterstützt.
logbased manualfilter Protokollbasierter Artikel mit manuell erstelltem Filter. Für diese Option müssen Sie auch die sync_object Eigenschaften filter festlegen. Diese Option wird für Oracle-Verleger nicht unterstützt.
logbased manualview Protokollbasierter Artikel mit manuell erstellter Sicht. Für diese Option müssen Sie auch die sync_object Eigenschaft festlegen. Diese Option wird für Oracle-Verleger nicht unterstützt.
indexed viewlogbased Artikel für protokollbasierte indizierte Sicht. Diese Option wird für Oracle-Verleger nicht unterstützt. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden.
indexed viewlogbased manualboth Artikel für protokollbasierte indizierte Sicht mit manuell erstelltem Filter und manuell erstellter Sicht. Für diese Option müssen Sie auch die sync_object Eigenschaften filter festlegen. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Diese Option wird für Oracle-Verleger nicht unterstützt.
indexed viewlogbased manualfilter Artikel für protokollbasierte indizierte Sicht mit manuell erstelltem Filter. Für diese Option müssen Sie auch die sync_object Eigenschaften filter festlegen. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Diese Option wird für Oracle-Verleger nicht unterstützt.
indexed viewlogbased manualview Artikel für protokollbasierte indizierte Sicht mit manuell erstellter Sicht. Für diese Option müssen Sie auch die sync_object Eigenschaft festlegen. Für diesen Artikeltyp muss die Basistabelle nicht separat veröffentlicht werden. Diese Option wird für Oracle-Verleger nicht unterstützt.
upd_cmd UPDATE auszuführende Anweisung; andernfalls wird sie aus dem Protokoll erstellt.
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 möglicherweise eine vorhandene Momentaufnahme ungültig macht. @force_invalidate_snapshot ist bit, mit einem Standardwert von 0.

0 Gibt an, dass Änderungen am Artikel nicht dazu führen, dass die Momentaufnahme ungültig ist. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen eine neue Momentaufnahme erfordern, tritt ein Fehler auf und es werden keine Änderungen vorgenommen.

1 Gibt an, dass Änderungen am Artikel dazu führen können, dass die Momentaufnahme ungültig ist. Wenn vorhandene Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern würden, erteilen Sie die Berechtigung, dass die vorhandene Momentaufnahme als veraltet markiert und eine neue Momentaufnahme generiert wird.

Im Abschnitt "Hinweise" finden Sie die Eigenschaften, die beim Ändern die Generierung einer neuen Momentaufnahme erfordern.

[ @force_reinit_subscription = ] force_reinit_subscription

Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise das erneute Initialisieren von vorhandenen Abonnements erfordert. @force_reinit_subscription ist bit, mit einem Standardwert von 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 erfordert, dass vorhandene Abonnements erneut initialisiert werden, tritt ein Fehler auf, und es werden keine Änderungen vorgenommen.

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.

Im Abschnitt "Hinweise" finden Sie die Eigenschaften, die bei änderung erforderlich sind, dass alle vorhandenen Abonnements erneut initialisiert werden.

[ @publisher = ] N'publisher'

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

Hinweis

Publisher sollte nicht verwendet werden, wenn Artikeleigenschaften in einem SQL Server-Publisher geändert werden.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_changearticle wird in der Momentaufnahmereplikation und Transaktionsreplikation verwendet.

Wenn ein Artikel zu einer Publikation gehört, die peer-to-Peer-Transaktionsreplikation unterstützt, können Sie nur die descriptionEigenschaften , ins_cmd, , upd_cmdund del_cmd die Eigenschaften ändern.

Das Ändern einer der folgenden Eigenschaften erfordert, dass eine neue Momentaufnahme generiert wird, und Sie müssen einen Wert 1 für den parameter @force_invalidate_snapshot angeben:

  • del_cmd
  • dest_table
  • destination_owner
  • ins_cmd
  • pre_creation_cmd
  • schema_options
  • upd_cmd

Das Ändern einer der folgenden Eigenschaften erfordert, dass vorhandene Abonnements erneut initialisiert werden, und Sie müssen einen Wert 1 für den parameter @force_reinit_subscription angeben.

  • del_cmd
  • dest_table
  • destination_owner
  • filter
  • ins_cmd
  • status
  • upd_cmd

Innerhalb einer vorhandenen Publikation können Sie einen Artikel ändern sp_changearticle , ohne die gesamte Publikation ablegen und erneut erstellen zu müssen.

Hinweis

Beim Ändern des Werts schema_optionführt das System keine bitweise Aktualisierung durch. Dies bedeutet, dass vorhandene Biteinstellungen möglicherweise deaktiviert werden, wenn Sie die Verwendung verwenden schema_option sp_changearticle. 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.

Gültige Schemaoptionen

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
indexed view logbased Alle Optionen Alle Optionen, aber 0x02
indexed view logbased manualfilter Alle Optionen Alle Optionen, aber 0x02
indexed view logbased manualview Alle Optionen Alle Optionen, aber 0x02
indexed view logbase manualboth Alle Optionen Alle Optionen, aber 0x02
proc exec 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000
serializable proc exec 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000
proc schema only 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000
view schema only 0x01, 0x010, , 0x020, 0x040, 0x20000x01000x40000, 0x100000, 0x200000, und 0x4000000x8000000x20000000x80000000x400000000x80000000 0x01, 0x010, , 0x020, 0x040, 0x20000x01000x40000, 0x100000, 0x200000, und 0x4000000x8000000x20000000x80000000x400000000x80000000
func schema only 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000 0x01, 0x20, 0x20000x20000000x8000000x400000, 0x8000000, , 0x10000000, , 0x20000000, und 0x400000000x80000000
indexed view schema only 0x01, 0x010, , 0x020, 0x040, 0x20000x01000x40000, 0x100000, 0x200000, und 0x4000000x8000000x20000000x80000000x400000000x80000000 0x01, 0x010, , 0x020, 0x040, 0x20000x01000x40000, 0x100000, 0x200000, und 0x4000000x8000000x20000000x80000000x400000000x80000000

Hinweis

Für das Aktualisieren von 0x80 Publikationen in die Warteschlange muss der schema_option Wert aktiviert sein. Die unterstützten schema_option Werte für Nicht-SQL Server-Publikationen sind: 0x01, , 0x02, 0x10, , 0x40und 0x1000 0x800x4000.

Beispiele

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 ausgeführt werden sp_changearticle.