Freigeben über


sp_repladdcolumn (Transact-SQL)

Fügt eine Spalte zu einem vorhandenen Tabellenartikel hinzu, der veröffentlicht worden ist. Dadurch kann die neue Spalte zu allen Verlegern hinzugefügt werden, die diese Tabelle veröffentlichen, oder die Spalte kann ausschließlich zu einer bestimmten Veröffentlichung hinzugefügt werden, die die Tabelle veröffentlicht. Diese gespeicherte Prozedur wird beim Verleger mit der Veröffentlichungsdatenbank ausgeführt.

Wichtiger HinweisWichtig

Diese gespeicherte Prozedur wurde als veraltet markiert und wird hauptsächlich aus Gründen der Abwärtskompatibilität unterstützt. Sie sollte nur mit Microsoft SQL Server 2000-Verlegern und SQL Server 2000-Wiederveröffentlichungsabonnenten verwendet werden. Diese Prozedur sollte nicht für Spalten mit Datentypen verwendet werden, die in SQL Server 2005 oder SQL Server 2008 eingeführt wurden.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

sp_repladdcolumn [ @source_object = ] 'source_object', [ @column = ] 'column' ]
    [ , [ @typetext = ] 'typetext' ]
    [ , [ @publication_to_add = ] 'publication_to_add' ]
    [ , [ @from_agent = ] from_agent ]
    [ , [ @schema_change_script = ] 'schema_change_script' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

Argumente

  • [ @source\_object =] 'source_object'
    Ist der Name des Tabellenartikels, der die hinzuzufügende neue Spalte enthält. source_object ist vom Datentyp nvarchar(358) und hat keinen Standardwert.

  • [ @column =] 'column'
    Ist der Name der Spalte in der für die Replikation hinzuzufügenden Tabelle. column ist vom Datentyp sysname und hat keinen Standardwert.

  • [ @typetext =] 'typetext'
    Entspricht der Definition der Spalte, die hinzugefügt wird. typetext ist vom Datentyp nvarchar(3000) und hat keinen Standardwert. Wenn beispielsweise die order_filled-Spalte hinzugefügt wird und diese ein Feld mit einem einzelnen Zeichen darstellt, das NULL nicht zulässt und den Standardwert N aufweist, dann ist order_filled der column-Parameter, während die Definition der Spalte, char(1) NOT NULL CONSTRAINT constraint_name DEFAULT 'N', den -Parameterwert typetext darstellt.

  • [ @publication\_to\_add =] 'publication_to_add'
    Ist der Name der Veröffentlichung, der die neue Spalte hinzugefügt wird. publication_to_add ist ein Wert vom Datentyp nvarchar(4000). Der Standardwert ist ALL. Ist die Einstellung ALL, sind alle Veröffentlichungen betroffen, die diese Tabelle enthalten. Wenn publication_to_add angegeben wird, wird nur dieser Veröffentlichung die neue Spalte hinzugefügt.

  • [ @from\_agent = ] from_agent
    Gibt an, ob die gespeicherte Prozedur von einem Replikations-Agent ausgeführt wird. from_agent ist vom Datentyp int und hat den Standardwert 0. Der Wert 1 wird verwendet, wenn die gespeicherte Prozedur von einem Replikations-Agent ausgeführt wird. In allen anderen Fällen muss der Standardwert 0 verwendet werden.

  • [ @schema\_change\_script =] 'schema_change_script'
    Gibt den Namen und Pfad eines SQL Server-Skripts an, das zum Ändern der systemgenerierten bzw. benutzerdefinierten gespeicherten Prozeduren dient. schema_change_script ist vom Datentyp nvarchar(4000). Der Standardwert ist NULL. Mithilfe der Replikation ist es möglich, mindestens eine der bei der Transaktionsreplikation verwendeten Standardprozeduren durch benutzerdefinierte gespeicherte Prozeduren zu ersetzen. schema_change_script wird ausgeführt, nachdem eine Schemaänderung an einem replizierten Tabellenartikel mit sp_repladdcolumn vorgenommen wurde. Zudem werden folgende Möglichkeiten geboten:

    • Wenn benutzerdefinierte gespeicherte Prozeduren automatisch erneut generiert werden, können mithilfe von schema_change_script diese benutzerdefinierten gespeicherten Prozeduren gelöscht und durch von Benutzern erstellte benutzerdefinierte gespeicherte Prozeduren ersetzt werden, die das neue Schema unterstützen.

    • Wenn benutzerdefinierte gespeicherte Prozeduren nicht automatisch erneut generiert werden, können mithilfe von schema_change_script diese benutzerdefinierten gespeicherten Prozeduren erneut generiert oder benutzerdefinierte gespeicherte Prozeduren erstellt werden.

  • [ @force\_invalidate\_snapshot = ] force_invalidate_snapshot
    Aktiviert oder deaktiviert die Möglichkeit, eine Momentaufnahme für ungültig zu erklären. force_invalidate_snapshot ist vom Datentyp bit. Der Standardwert ist 1.

    Der Wert 1 gibt an, dass Änderungen am Mergeartikel die Ungültigkeit der Momentaufnahme bewirken können. Wenn dies zutrifft, wird mit dem Wert 1 die Berechtigung für das Auftreten der neuen Momentaufnahme erteilt.

    Der Wert 0 gibt an, dass Änderungen am Artikel nicht bewirken, dass die Momentaufnahme ungültig wird.

  • [ @force\_reinit\_subscription = ] force_reinit_subscription
    Aktiviert oder deaktiviert die Möglichkeit, das Abonnement erneut zu initialisieren. force_reinit_subscription ist vom Datentyp bit. Der Standardwert ist 0.

    Durch 0 wird angegeben, dass das Abonnement nicht durch Änderungen am Artikel erneut initialisiert werden kann.

    Der Wert 1 gibt an, dass Änderungen am Artikel bewirken können, dass das Abonnement erneut initialisiert wird. Wenn dies zutrifft, wird mit dem Wert 1 die Berechtigung für das Auftreten der erneuten Initialisierung für das Abonnement erteilt.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_repladdcolumn ist als veraltet markiert und wird nur zum Sicherstellen der Abwärtskompatibilität bereitgestellt. Das Hinzufügen einer Spalte zu einem replizierten Tabellenartikel sollte durch Ausführen von DDL-Befehlen (Data Definition Language) für die veröffentlichte Tabelle erfolgen. Diese DDL-Befehle werden bei der Replikation automatisch repliziert, sofern die DDL-Replikation aktiviert ist. Weitere Informationen finden Sie unter Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken.

sp_repladdcolumn ist für die Weitergabe von DDL-Änderungen von Wiederveröffentlichungsabonnenten, die eine frühere Version von SQL Server 2000-Abonnenten ausführen, weiterhin erforderlich.

sp_repladdcolumn wird für alle Replikationstypen verwendet.

Beim Verwenden von sp_repladdcolumn gilt Folgendes: Wenn eine Schemaänderung an einem Artikel vorgenommen wurde, der zu einer Veröffentlichung gehört, die ein DTS-Paket (Data Transformation Services) verwendet, wird die Schemaänderung nicht an den Abonnenten weitergegeben, und die benutzerdefinierten Prozeduren für INSERT/UPDATE/DELETE werden auf dem Abonnenten nicht erneut generiert. Der Benutzer muss das DTS-Paket manuell erneut generieren und die entsprechende Schemaänderung auf den Abonnenten vornehmen. Wenn das Schemaupdate nicht angewendet wird, erzeugt der Verteilungs-Agent möglicherweise beim Anwenden der nachfolgenden Änderungen einen Fehler. Bevor Sie eine Schemaänderung durchführen, stellen Sie sicher, dass keine ausstehenden Transaktionen zum Übermitteln vorhanden sind.

Wird typetext ein Standardwert zugewiesen, bei dem es sich um eine nicht deterministische Funktion handelt (Beispiel: 'datetime not null default getdate()'), kann dies nach dem Hinzufügen der neuen Spalte zu Nichtkonvergenz führen, weil die Funktion auf dem Abonnenten ausgeführt wird, um einen Standardwert in die Spalte zu laden.

Timestamp- und berechnete Spalten werden für Veröffentlichungen im Zeichenmodus herausgefiltert. Wenn eine Timestamp- oder berechnete Spalte mithilfe von sp_repladdcolumn hinzugefügt wird, erhalten die Abonnements dieser Veröffentlichungen die neue Spalte nicht.

Wichtiger HinweisWichtig

Nach der Ausführung von sp_repladdcolumn sollte eine Sicherung der Veröffentlichungsdatenbank durchgeführt werden. Wenn dies versäumt wird, kann das zu einem Mergefehler führen, nachdem die Veröffentlichungsdatenbank wiederhergestellt wurde.

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin und der festen Datenbankrolle db_owner können sp_repladdcolumn ausführen.

Siehe auch

Verweis

Gespeicherte Systemprozeduren (Transact-SQL)

Konzepte

Als veraltet markierte Funktionen der SQL Server-Replikation