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

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

2 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

3 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

3 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

4 Tagen ago

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

5 Tagen ago