So lässt sich Change Data Capture in SQL Server 2008 einrichten

Das grundsätzliche Problem mit der Erfassung von Datenänderungen besteht darin, dass sie Trigger in der Basistabelle erfordern. Diese Trigger können entweder die Daten direkt in Audit-Tabellen schreiben oder mithilfe der Service-Broker-Funktion zu einem späteren Zeitpunkt erfassen. In beiden Fällen muss die erste Erfassung im Rahmen der ursprünglichen Transaktion erfolgen. In SQL Server 2008 ermöglicht die Funktion Change Data Capture (CDC) eine viel einfachere Erfassung von Datenänderungen, ohne dass Trigger verwendet werden, so dass auch der damit verbundene Aufwand entfällt.

Einrichten der CDC-Funktion

Als Beispiel soll eine Datenbank zum Testen der verwendeten Szenarien erstellt werden. Die Anweisung unten erstellt eine Datenbank namens CaptureChanges in der verwendeten Datenbankinstanz:


CREATE DATABASE CaptureChanges
GO

Um CDC nutzen zu können, muss es auf Datenbankebene aktiviert werden. Folgende Anweisung ruft die gespeicherte Prozedur sp_cdc_enable_db auf, die CDC für den aktuellen Datenbankbereich aktiviert:


USE CaptureChanges
GO
EXEC sys.sp_cdc_enable_db
GO

Um zu zeigen, wie CDC Datenänderungen erfasst, ist eine Tabelle erforderlich, in der Datenänderungen vorgenommen werden können. Das unten stehende Skript erstellt eine Tabelle namens SalesHistory und schreibt Daten hinein:

Zu diesem Zeitpunkt sind noch keine Einträge in der SalesHistory erfasst, da sie noch für CDC aktiviert werden muss. Um CDC für eine bestimmte Tabelle zu verwenden, muss die Tabelle einen Primärschlüssel-Constraint oder einen Unique-Constraint enthalten, um die Zeilen in der Tabelle eindeutig zu identifizieren. Im Beispiel oben wird eine IDENTITY-Spalte für den Primärschlüssel-Constraint verwendet.

Um die Tabelle für die Datenerfassung zu aktivieren, muss man eine gespeicherte Prozedur ausführen und den Tabellenname eingeben (Der SQL Server Agent sollte während der Ausführung dieser gespeicherten Prozedur laufen.).

Jetzt soll eine willkürliche Auswahl von Einträgen in der SalesHistory-Tabelle aktualisiert werden. Da CDC für diese Tabelle aktiviert ist, erfasst das CDC-System die Datenänderungen.


UPDATE s
SET SalePrice = SalePrice + 1
FROM SalesHistory s
where SaleID % 13 = 0

Würde das CDC-Schema nicht bereits in der Datenbank existieren, würde es von der Prozedur oben erstellt werden. Alle CDC-Tabellen gehören zu diesem Schema.

Wenn die CapturesChanges-Tabelle für CDC aktiviert ist, werden zwei SQL-Server-Agent-Jobs erstellt. Der eine Job verwendet den LogReader zur Erfassung von Änderungen, während der andere Job zum Entfernen älterer Meldungen dient. Die erstellten Job-Namen sind unten aufgeführt:


cdc.CaptureChanges_capture
cdc.CaptureChanges_cleanup

CDC besitzt Systemtabellen, die bei Aktivierung von CDC erstellt werden. Das Augenmerk muss zunächst auf der Tabelle liegen, welche die auditierten Daten speichert. Eine SalesHistory_CT-Tabelle wird erstellt, wenn die SalesHistory-Tabelle für CDC aktiviert wird. In dieser Tabelle erscheinen die Datenänderungen, zusammen mit einer Reihe zusätzlicher Spalten, die CDC zum Berichten von Datenänderungen verwendet. Zu beachten ist, dass diese Tabelle zum CDC-Schema gehört.

ZDNet.de Redaktion

Recent Posts

Apple meldet Rekordumsatz im vierten Fiskalquartal

Die Einnahmen klettern auf fast 95 Milliarden Dollar. Allerdings belastet der Steuerstreit mit der EU…

2 Tagen ago

Microsoft steigert Umsatz und Gewinn im ersten Fiskalquartal

Das stärkste Wachstum verbucht die Cloud-Sparte. Microsoft verpasst bei der Umsatzprognose für das laufende Quartal…

3 Tagen ago

Bezahlkarten: Infineon verspricht weniger Plastikmüll

Ein Coil-on-Module-Package integriert Chip und Antenne, was den Kartenkörper fast vollständig recycelbar machen soll.

3 Tagen ago

Firefox 132 schließt elf Sicherheitslücken

Mindestens eine Anfälligkeit erlaubt das Einschleusen von Schadcode. Außerdem erweitern die Entwickler den Support für…

3 Tagen ago

Telekom nennt Termin für 2G-Ende

Zum 30. Juni 2028 soll das 2G-Netz komplett abgeschaltet werden und den Weg für schnellere…

3 Tagen ago

Alphabet übertrifft die Erwartungen im dritten Quartal

Gewinn und Umsatz legen deutlich zu. Zum Wachstum tragen auch die Sparten Cloud und Abonnements…

4 Tagen ago