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

Chips bescheren Samsung deutlichen Gewinnzuwachs

Das operative Ergebnis wächst um fast 6 Billionen Won auf 6,64 Billionen Won. Die Gewinne…

1 Stunde ago

Chrome: Google verschiebt das Aus für Drittanbietercookies

Ab Werk blockiert Chrome Cookies von Dritten nun frühestens ab Anfang 2025. Unter anderem gibt…

17 Stunden ago

BAUMLINK: Wir sind Partner und Aussteller bei der Frankfurt Tech Show 2024

Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…

19 Stunden ago

Business GPT: Generative KI für den Unternehmenseinsatz

Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.

23 Stunden ago

Alphabet übertrifft die Erwartungen im ersten Quartal

Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…

4 Tagen ago

Microsoft steigert Umsatz und Gewinn im dritten Fiskalquartal

Aus 61,9 Milliarden Dollar generiert das Unternehmen einen Nettoprofit von 21,9 Milliarden Dollar. Das größte…

4 Tagen ago