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:
Stellen Sie beim Ausführen von sp_addarticle (Transact-SQL) sicher, dass das
@schema_option
0x02 Bit auf "true" festgelegt ist.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@value
an.
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:
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.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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für