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 0x100 enthalten 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 PROCEDURE usw.). |
|
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 description
Eigenschaften , ins_cmd
, , upd_cmd
und 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_option
fü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 , 0x2000 0x2000000 0x800000 0x400000 , 0x8000000 , , 0x10000000 , , 0x20000000 , und 0x40000000 0x80000000 |
0x01 , 0x20 , 0x2000 0x2000000 0x800000 0x400000 , 0x8000000 , , 0x10000000 , , 0x20000000 , und 0x40000000 0x80000000 |
serializable proc exec |
0x01 , 0x20 , 0x2000 0x2000000 0x800000 0x400000 , 0x8000000 , , 0x10000000 , , 0x20000000 , und 0x40000000 0x80000000 |
0x01 , 0x20 , 0x2000 0x2000000 0x800000 0x400000 , 0x8000000 , , 0x10000000 , , 0x20000000 , und 0x40000000 0x80000000 |
proc schema only |
0x01 , 0x20 , 0x2000 0x2000000 0x800000 0x400000 , 0x8000000 , , 0x10000000 , , 0x20000000 , und 0x40000000 0x80000000 |
0x01 , 0x20 , 0x2000 0x2000000 0x800000 0x400000 , 0x8000000 , , 0x10000000 , , 0x20000000 , und 0x40000000 0x80000000 |
view schema only |
0x01 , 0x010 , , 0x020 , 0x040 , 0x2000 0x0100 0x40000 , 0x100000 , 0x200000 , und 0x400000 0x800000 0x2000000 0x8000000 0x40000000 0x80000000 |
0x01 , 0x010 , , 0x020 , 0x040 , 0x2000 0x0100 0x40000 , 0x100000 , 0x200000 , und 0x400000 0x800000 0x2000000 0x8000000 0x40000000 0x80000000 |
func schema only |
0x01 , 0x20 , 0x2000 0x2000000 0x800000 0x400000 , 0x8000000 , , 0x10000000 , , 0x20000000 , und 0x40000000 0x80000000 |
0x01 , 0x20 , 0x2000 0x2000000 0x800000 0x400000 , 0x8000000 , , 0x10000000 , , 0x20000000 , und 0x40000000 0x80000000 |
indexed view schema only |
0x01 , 0x010 , , 0x020 , 0x040 , 0x2000 0x0100 0x40000 , 0x100000 , 0x200000 , und 0x400000 0x800000 0x2000000 0x8000000 0x40000000 0x80000000 |
0x01 , 0x010 , , 0x020 , 0x040 , 0x2000 0x0100 0x40000 , 0x100000 , 0x200000 , und 0x400000 0x800000 0x2000000 0x8000000 0x40000000 0x80000000 |
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
, , 0x40
und 0x1000
0x80
0x4000
.
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
.