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.

Themenlink (Symbol)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'
    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.

    HinweisHinweis
    Damit 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.

    HinweisHinweis
    Diese 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.

    HinweisHinweis

    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.

HinweisHinweis

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

HinweisHinweis

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.