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?
Feature | FrĂŒher | Jetzt |
---|---|---|
Azure-UnterstĂŒtzung | Nein | Ja (SQL MI) |
Performance bei vielen Ănderungen | Schwach | Deutlich besser |
net_changes | UnzuverlÀssig | Stabil und nutzbar |
Deaktivieren/Reaktivieren | Nur mit viel Aufwand | Sauber möglich |
Metadaten-Handhabung | Chaotisch | Strukturierter |
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.
Keine Antworten