Freigeben über


Transaktionsartikel – Regenerieren zur Wiedergabe von Schemaänderungen

Gilt für:SQL ServerAzure SQL Managed Instance

Änderungen von Daten auf den Abonnenten werden bei der Transaktionsreplikation standardmäßig mithilfe von gespeicherten Prozeduren vorgenommen, die durch interne Prozeduren für jeden Tabellenartikel in der Veröffentlichung generiert werden. Die drei Prozeduren (eine für Einfügungen, eine für Updates und eine für Löschungen) werden auf den Abonnenten kopiert und ausgeführt, wenn eine Einfügung, ein Update oder eine Löschung auf den Abonnenten repliziert wird. Wenn eine Schemaänderung an einer Tabelle in einem SQL Server Publisher vorgenommen wird, generiert die Replikation diese Prozeduren automatisch, indem sie denselben Satz interner Skriptprozeduren aufrufen, sodass die neuen Prozeduren mit dem neuen Schema übereinstimmen (die Replikation von Schemaänderungen wird für Oracle-Herausgeber nicht unterstützt).

Es ist auch möglich, benutzerdefinierte Prozeduren anzugeben, die an die Stelle einer oder mehrerer Standardprozedur(en) treten. Benutzerdefinierte Prozeduren müssen immer dann geändert werden, wenn sich die Schemaänderung auf die jeweilige Prozedur auswirkt. Wenn eine Prozedur z. B. auf eine Spalte verweist, die in einer Schemaänderung gelöscht wurde, müssen die Verweise auf diese Spalte aus der Prozedur entfernt werden. Für die Weitergabe einer neuen benutzerdefinierten Prozedur an Abonnenten durch Replikation gibt es die folgenden beiden Möglichkeiten:

  • Die erste Möglichkeit besteht in der Verwendung einer benutzerdefinierten Skriptprozedur zum Ersetzen der von der Replikation verwendeten Standardprozeduren:

    1. Stellen Sie beim Ausführen von sp_addarticle (Transact-SQL) sicher, dass das @schema_option 0x02 Bit auf "true" festgelegt ist.

    2. Führen Sie sp_register_custom_scripting (Transact-SQL) aus, und geben Sie einen Wert von "insert", "update" oder "delete" für den Parameter @type und den Namen der benutzerdefinierten Skriptprozedur für den Parameter @valuean.

    Wenn das nächste Mal eine Schemaänderung vorgenommen wird, ruft die Replikation diese gespeicherte Prozedur auf, um die Definition für die neue benutzerdefinierte gespeicherte Prozedur auszugeben. Anschließend wird die Prozedur an die einzelnen Abonnenten weitergegeben.

  • Die zweite Möglichkeit besteht darin, ein Skript zu verwenden, das eine neue benutzerdefinierte Prozedurdefinition enthält:

    1. Wenn Sie sp_addarticle (Transact-SQL) ausführen, legen Sie das @schema_option 0x02 Bit auf "false" fest, sodass die Replikation keine benutzerdefinierten Prozeduren beim Abonnenten generiert.

    2. Erstellen Sie vor jeder Schemaänderung eine neue Skriptdatei, und registrieren Sie das Skript mit der Replikation, indem Sie sp_register_custom_scripting (Transact-SQL) ausführen. Geben Sie für den @type-Parameter den Wert „custom_script“ und für den Parameter @value den Pfad zum Skript auf dem Verleger an.

    Bei der nächsten relevanten Schemaänderung wird dieses Skript innerhalb derselben Transaktion wie der DDL-Befehl auf allen Abonnenten ausgeführt. Nach Abschluss der Schemaänderung wird die Registrierung des Skripts aufgehoben. Damit das Skript bei einer weiteren Schemaänderung wieder ausgeführt wird, müssen Sie es erneut registrieren.

Weitere Informationen

Angeben der Weitergabemethode für Änderungen bei Transaktionsartikeln
Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken