Verbesserungen bei Change Data Capture (CDC) => Was CDC jetzt besser und schneller kann

Was sich bei CDC verÀndert hat

FrĂŒher war CDC eher was fĂŒr große Budgets.
Langsam. Speicherhungrig. Fummelig in Wartung.

Seit SQL Server 2022 lĂ€uft’s deutlich besser.
Schneller. Effizienter. Stabiler.
Du kannst CDC jetzt auch in Azure SQL Managed Instance nutzen.
Und in Standard-Editionen. Ohne Workarounds.

Die grĂ¶ĂŸten Verbesserungen auf einen Blick

  • CDC funktioniert jetzt nativ in Azure SQL MI
  • Performance deutlich besser bei hoher Transaktionsrate
  • Neuer Parameter @supports_net_changes = 1 deutlich stabiler
  • CDC lĂ€sst sich aufheben und reaktivieren, ohne alles neu zu machen
  • Metadaten-Tabellen jetzt ĂŒbersichtlicher und robuster

Beispiel: Aktivierung von CDC (modern)

-- Aktivierung auf Datenbank-Ebene
EXEC sys.sp_cdc_enable_db;
-- Aktivierung auf Tabellenebene
EXEC sys.sp_cdc_enable_table  
    @source_schema = N'dbo',  
    @source_name = N'Kunden',  
    @role_name = NULL,  
    @supports_net_changes = 1;

FrĂŒher war @supports_net_changes ein Risiko. Jetzt ist es nutzbar.

Neuer Ablauf fĂŒr Abruf der Änderungen

DECLARE @from_lsn BINARY(10), @to_lsn BINARY(10);

-- Start- und Endzeitpunkt definieren
SET @from_lsn = sys.fn_cdc_get_min_lsn('dbo_Kunden');
SET @to_lsn = sys.fn_cdc_get_max_lsn();

-- Änderungen holen
SELECT *
FROM cdc.fn_cdc_get_all_changes_dbo_Kunden(@from_lsn, @to_lsn, N'all');

Oder differenziert:

SELECT *
FROM cdc.fn_cdc_get_net_changes_dbo_Kunden(@from_lsn, @to_lsn, N'all');

Du bekommst nur die letzte Version pro Key. Viel schlanker. Viel schneller.

Neuerung: CDC fĂŒr Azure SQL MI

FrĂŒher: Fehlanzeige.
Jetzt: CDC mit Bordmitteln aktivierbar.

-- Aktivierung in Azure SQL MI
ALTER DATABASE DeineDB SET CHANGE_DATA_CAPTURE = ON;

CDC lĂ€uft da ĂŒber ein separates Schema und System-Jobs.
Performance ist vergleichbar mit On-Prem.

Tabelle: Was hat sich verbessert?

FeatureFrĂŒherJetzt
Azure-UnterstĂŒtzungNeinJa (SQL MI)
Performance bei vielen ÄnderungenSchwachDeutlich besser
net_changesUnzuverlÀssigStabil und nutzbar
Deaktivieren/ReaktivierenNur mit viel AufwandSauber möglich
Metadaten-HandhabungChaotischStrukturierter

Wann Du CDC verwenden solltest

  • Wenn Du inkrementelle LadevorgĂ€nge brauchst
  • Wenn Trigger zu viel stören
  • Wenn Du Änderungen quer ĂŒber Tabellen verfolgen willst
  • Wenn Du Historien brauchst – aber ohne Vollarchiv

Wann lieber nicht

  • Wenn Du nur 100 Zeilen pro Woche Ă€nderst
  • Wenn Du schon Temporal Tables sauber nutzt
  • Wenn Deine Log-GrĂ¶ĂŸe kritisch ist

Best Practice: Cleanup nicht vergessen

CDC schreibt viel weg. Du musst alte Daten löschen.

EXEC sys.sp_cdc_cleanup_change_table  
    @capture_instance = 'dbo_Kunden',  
    @low_water_mark = sys.fn_cdc_get_min_lsn('dbo_Kunden');

Oder ĂŒber den SQL Agent Job cdc.<DB>_cleanup.

Am besten planst Du das wöchentlich.

Trockenes Fazit

CDC ist endlich brauchbar.
Wenn Du auf SQL Server 2022 oder Azure MI unterwegs bist – nutz es.

Aber setz Dir vorher Grenzen: Speicher, Cleanup, Zeitrahmen.

Sonst wird’s irgendwann
 unĂŒbersichtlich.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert