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 Publikation hinzugefügt werden, die die Tabelle veröffentlicht. Diese gespeicherte Prozedur wird beim Verleger mit der Publikationsdatenbank ausgeführt.

ms189464.note(de-de,SQL.90).gifWichtig:
Die gespeicherte Prozedur ist als veraltet markiert und wird hauptsächlich zum Sicherstellen der Abwärtskompatibilität unterstützt. Sie sollte nur mit Microsoft SQL Server 2000-Verlegern und SQL Server 2000-Wiederveröffentlichungsabonnenten verwendet werden.

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'
    Der Name des Tabellenartikels, der die neue hinzuzufügende Spalte enthält. source_object ist vom Datentyp nvarchar(358) und hat keinen Standardwert.
  • [ @column=] 'column'
    Der Name der Spalte in der Tabelle, die für die Replikation hinzugefügt werden soll. column ist vom Datentyp sysname und hat keinen Standardwert.
  • [ @typetext=] 'typetext'
    Die 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 typetext-Parameterwert darstellt.
  • [ @publication_to_add=] 'publication_to_add'
    Der Name der Publikation, der die neue Spalte hinzugefügt werden soll. publication_to_add ist vom Datentyp nvarchar(4000) und hat den Standardwert ALL. Ist die Einstellung ALL, sind alle Publikationen betroffen, die diese Tabelle enthalten. Wenn publication_to_add angegeben wird, wird nur dieser Publikation 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 benutzerdefinierten gespeicherten Prozeduren verwendet wird. schema_change_script ist vom Datentyp nvarchar(4000) und hat den Standardwert NULL. Bei der Replikation können Standardprozeduren, die für die Transaktionsreplikation verwendet werden, durch von Benutzern erstellte benutzerdefinierte gespeicherte Prozeduren ersetzt werden. schema_change_script wird ausgeführt, nachdem mithilfe von sp_repladdcolumn eine Schemaänderung an einem replizierten Tabellenartikel vorgenommen wurde. Das Skript kann für Folgendes verwendet werden:

    • 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, einen Snapshot 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 bewirken können, dass der Snapshot ungültig wird. Wenn dies zutrifft, wird mit dem Wert 1 die Berechtigung für das Auftreten des neuen Snapshots erteilt.

    Der Wert 0 gibt an, dass Änderungen an dem Artikel nicht bewirken, dass der Snapshot ungültig wird.

  • [ @force_reinit_subscription = ] force_reinit_subscription
    Aktiviert oder deaktiviert die Möglichkeit, ein Abonnement erneut zu initialisieren. force_reinit_subscription ist vom Datentyp bit und hat den Standardwert 0.

    Der Wert 0 gibt an, dass Änderungen an dem Artikel nicht bewirken, dass das Abonnement erneut initialisiert wird.

    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. Bei der Replikation werden diese DDL-Befehle automatisch repliziert, sofern die DDL-Replikation aktiviert wurde. Weitere Informationen finden Sie unter Vornehmen von Schemaänderungen in Publikationsdatenbanken.

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 Publikation 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 Schemaänderung an den Abonnenten weitergeben. Wenn die Schemaaktualisierung nicht angewendet wird, wird der Verteilungs-Agent möglicherweise beim Anwenden der nachfolgenden Änderungen einen Fehler erzeugen. 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 Publikationen im Zeichenmodus herausgefiltert. Wenn eine Timestamp- oder berechnete Spalte mithilfe von sp_repladdcolumn hinzugefügt wird, erhalten die Abonnements dieser Publikationen die neue Spalte nicht.

ms189464.note(de-de,SQL.90).gifWichtig:
Nach der Ausführung von sp_repladdcolumn sollte eine Sicherung der Publikationsdatenbank durchgeführt werden. Wenn dies versäumt wird, kann es zu einem Mergefehler führen, nachdem die Publikationsdatenbank 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)

Andere Ressourcen

Als veraltet markierte Features der SQL Server 2005-Replikation

Hilfe und Informationen

Informationsquellen für SQL Server 2005