Erfassen von Änderungsdeltas, wenn die Datenbankreplikation oder CDC unterbrochen wird

7

Das Unternehmen, für das ich arbeite, implementiert derzeit die Erfassung von Änderungsdaten auf einem Microsoft BI-Stack, um inkrementelle Änderungen zu erfassen, die in das Data Warehouse geladen werden müssen. Bisher hat dies für uns hervorragend funktioniert. Wir haben das Datenbankreplikations-Setup und das CDC-Setup auf Tabellenebene in der replizierten Datenbank für die spezifischen Tabellen und Spalten, die wir verfolgen müssen. Das Problem, auf das wir stoßen, ist, dass sowohl die Replikation als auch CDC das Potenzial haben, zu brechen. In diesem Fall werden Änderungen, die von der Unterbrechung bis zur Auflösung auftreten, nicht erfasst und können daher nicht an das Data Warehouse übergeben werden.

Ich frage mich, wie Sie am besten alle Deltas identifizieren und in das Data Warehouse laden können. Theoretisch können Sie Ihr gesamtes Data Warehouse neu erstellen. Was ist dann der beste Weg, um historische Typ-2-Daten zu speichern?

BilliD
quelle
Könnten Sie zusätzliche Details dazu angeben, was Sie unter "Pause" verstehen? Wenn es sich um Replikationsagentenfehler handelt, werden die Agenten so erstellt, dass sie ab dem Zeitpunkt des letzten Fehlers fortgesetzt werden. Sie sollten nicht die Notwendigkeit haben, die DW nach Fehlern neu zu erstellen, weshalb mich die Details des Bruchs interessieren.
Amit Banerjee

Antworten:

2

Unter der Annahme, dass ein schwerwiegender Fehler aufgetreten ist, der dazu führt, dass Sie die fehlenden Änderungen vom Typ 2 "wiederherstellen" müssen, können Sie möglicherweise Ihre Quellendatenbankdaten und Protokollsicherungen verwenden. Wenn Sie diese Sicherungen beibehalten haben, können Sie Folgendes tun:

  1. Stellen Sie eine Kopie der Quellendatenbank bis zu einem Zeitpunkt wieder her, an dem der Fehler aufgetreten ist. Benennen Sie die Datenbank [dbnameEmergency] .
  2. Stellen Sie die Protokolle schrittweise auf [dbnameEmergency] wieder her , z. B. 1 Minute, 5 Minuten, 30 Minuten, je nachdem, wie fein Sie die Deltas verarbeiten möchten, um den Schaden zu verringern.
  3. Zum Lesen und Vergleichen der inkrementellen Wiederherstellungen müssen entweder Snapshots erstellt werden, wenn Sie über Enterprise Edition verfügen, oder das Protokoll im STANDBY-Modus wiederhergestellt werden, um die Daten zu lesen.
  4. Vergleichen Sie die letzten lesbaren Änderungen in [dbnameEmergency] mit dem Status von [dbnameReplica] (der Datenbank, die Sie korrigieren möchten ) und schreiben Sie Code, um die Änderungen anzuwenden, die Sie auf [dbnameReplica] ableiten können .

Hinweis: Wenn Ihre Datenbank eine Spaltenversion (oder einen Zeitstempel) verwendet, ist das Auffinden der geänderten Zeilen einfacher.

Dies ist kein perfekter Prozess und wird zweifellos einige Details übersehen. Aber es würde Ihnen einen Ansatz geben, der Ihnen hilft, den Schaden zu beheben.

Trotzdem: Es liegt an Ihnen, zu entscheiden, ob sich dieser Prozess lohnt.

RLF
quelle