Am Beispiel des Sarbanes-Oxley Act, dem US-amerikanischen Gesetz zur Offenlegung von Finanzdaten, lässt sich hervorragend zeigen, wie wichtig das Abfragen von Datenänderungen sein kann. Audit-Systeme spielen aber nicht nur bei der einfachen Aufbewahrung eine große Rolle. Beim ETL-Prozess (Extract, Transform und Load) etwa werden in regelmäßigen Abständen veränderte Daten im Datenlager abgelegt. Hier ist eine Prüfmethode vonnöten, die feststellt, bei welchen Einträgen sich tatsächlich Änderungen ergeben haben. Change Data Capture (CDC), eine neue Funktion in SQL Server 2008, bietet genau diese Möglichkeit. Sie erfasst strukturelle wie auch inhaltliche Änderungen und speichert sie im SQL-Server-System.
Was ist Change Data Capture?
Mit Change Data Capture lassen sich für Daten in einer Datenbank Änderungsverfolgungen implementieren und verwalten. Das Ganze funktioniert ohne individuelle Prüfverfahren oder Trigger. Das Feature erfasst DML-Vorgänge wie das Einfügen, Aktualisieren und Löschen von Inhalten und stellt die geänderte Datenbank für spätere Reporting-Vorgänge bereit. CDC wird zuerst auf Datenbank-Ebene freigegeben. Anschließend wird es für die relevanten Tabellen aktiviert. Sobald eine Tabelle für CDC freigegeben ist, wird eine Änderungstabelle mit der gleichen Spaltenstruktur wie die Quelltabelle erstellt. Diese zeichnet dann die Datenänderungen auf.
Einfüge- und Löschvorgänge erscheinen in dieser Änderungstabelle in einer Zeile. Für Aktualisierungen gibt es zwei Einträge. Bei Änderungen in Form neuer oder gelöschter Daten wird nur ein Wert angezeigt: entweder die neu hinzugefügte Zeile oder die gelöschte Zeile. Bei Aktualisierungen hingegen werden in der Prüftabelle zwei verschiedene Zeilen angezeigt: die Werte vor sowie die Werte nach der Aktualisierung. Das CDC-System erfasst beide Aufzeichnungen. Somit lassen sich die Vorher-Nachher-Werte ganz einfach vergleichen.
Neben diesen Vorher-Nachher-Werten vermerkt das System zusätzlich auch alle aktualisierten Spalten in Form einer Bitmaske. Mithilfe dieser Maske fällt es ganz leicht, zu bestimmen, für welche Spalten die Aktualisierungsanweisung galt und für welche nicht.
Nach einer Weile können etliche Änderungen zusammenkommen. Das macht es notwendig, einige Änderungseinträge, die das CDC-System erfasst hat, aus der Tabelle zu entfernen. Und hier ist es sehr praktisch, dass SQL Server 2008 Cleanup-Richtlinien mitbringt. Denn so wird die Datenmenge in den Änderungstabellen nicht zu groß. Mithilfe dieser Richtlinien lassen sich Gültigkeitsintervalle festlegen. Somit werden nach einer zuvor bestimmten Anzahl von Tagen die vom CDC-System erfassten Daten wieder gelöscht.
CDC leistet auch für die Überwachung und Aufnahme neuer Spalten, etwa bei Änderungen in den Quelltabellen, gute Arbeit. Die Funktion eignet sich einfach hervorragend, um jegliche Strukturänderungen der Tabellen nachzuverfolgen.
CDC analysiert dabei das Transaktions-Log, um veränderte Daten zu erfassen und sie in die Prüftabellen zu übernehmen. Der Audit-Prozess läuft asynchron ab und verfügt über seinen eigenen Transaktionsbereich. Die eigentliche Transaktion der Datenänderung wird also nicht beeinträchtigt.
Wer von den Vorteilen der CDC-Funktion profitieren will, muss nicht zwangsläufig den vollständigen Wiederherstellungsmodus verwenden. Allerdings gibt es beim einfachen Wiederherstellungsmodus einiges zu beachten. Denn in diesem Modus trunkiert die Logdatei erst dann, wenn die veränderten Daten vom CDC-Prozess erfasst wurden. Dadurch kann sich beim Ausführen von Checkpoint der Protokollkürzungspunkt nach hinten verschieben. Womöglich gerät dann die Logdatei größer als erwartet. Bei begrenztem Platz auf dem SQL-Server sollte das auf keinen Fall unbeachtet bleiben.
Neben dem Verzeichnen veränderter Daten in Prüftabellen kann CDC auch Änderungen der DDL (Data Definition Language) in den Quelltabellen nachverfolgen. Die Möglichkeit, diese Daten zu erfassen und zu speichern, ist nicht nur für Prüfzwecke, sondern auch für das Änderungsmanagement von größter Bedeutung.
Ausblick
Hier wurden vorerst nur die Möglichkeiten der neuen Change-Data-Capture-Technologie in SQL Server 2008 vorgestellt. Die neuen Funktionen sind zweifellos großartig. Allerdings erreicht man diese Ergebnisse mit ein wenig Codieraufwand und ein bisschen Replikation auch schon in SQL Server 2005. In einem kommenden Artikel wird es deshalb darum gehen, wie Datenüberprüfungen mit CDC auf einem SQL-Server-2008-System konkret durchgeführt werden.
Neueste Kommentare
Noch keine Kommentare zu SQL Server 2008: Change Data Capture steuert Audit-Prozesse
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.