Wir möchten Change Data Capture in SQL 2012 verwenden. Wir versuchen herauszufinden, ob es eine einfache Möglichkeit gibt, herauszufinden, welche Tabellen von einem bestimmten lsn geändert wurden. Gibt es eine eingebaute Funktion oder müssten wir jede cdc-Tabelle abfragen, um zu sehen, ob sich die lsn dort befindet?
UPDATE, um ein bisschen mehr darüber zu erklären, was wir versuchen:
Wir versuchen, einen Prozess zu erstellen, der die CDC-Daten für alle Tabellen in der Datenbank überprüft (denken Sie an 100er). Dieser Prozess wird nach einem Zeitplan ausgeführt und kennt den letzten lsn, den er verarbeitet hat. Wenn es läuft, wollen wir etwas mit jeder der cdc-Tabellen machen , die sich seit dem letzten aufgezeichneten lsn geändert haben .
Wir könnten das überprüfen fn_cdc_get_all_changes_dbo_tablename(@lastlsn, @currentlsn, 'all')
, aber das Problem dabei ist, dass wir es 100 Mal ausführen müssten (einmal für jede Tabelle). Gibt es einen zentralen Ort, den wir überprüfen können?
Wie in der Frage erwähnt, versuchen wir, mehrere cdc-Tabellen abzufragen und einen ähnlichen Prozess auf alle anzuwenden. Die einzige Möglichkeit, dies zu tun, besteht darin, jede Tabelle einzeln abzufragen (mithilfe der
fn_cdc_get_all_changes_dbo_tablename
Funktion). Es gibt keinen zentralen Ort, an dem überprüft werden kann, was sich geändert hat.quelle
sys.tables
gefiltert nach verwendenis_tracked_by_cdc
und die Funktion verwenden, um abzufragen, was sich geändert hat.