Udostępnij za pomocą


Przechwytywanie danych zmian - sys.dm_cdc_log_scan_sessions

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca jeden wiersz dla każdej sesji log scan w bieżącej bazie danych. Ostatni wiersz zwracany reprezentuje bieżącą sesję. Możesz użyć tego widoku, aby zwrócić informacje o statusie bieżącej sesji skanowania logów lub zagregowane informacje o wszystkich sesjach od momentu ostatniego uruchomienia instancji SQL Server.

Rekordy są sys.dm_cdc_log_scan_sessions resetowane za każdym razem, gdy instancja SQL Server jest restartowana lub po awaryjnym przejściu. Dodatkowo, jeśli zapytany baza danych pełni drugorzędną rolę grupy dostępności Always On, to nie są zwracane żadne rekordy.

Aby uzyskać więcej informacji, zapoznaj się z Czym jest przechwytywanie danych zmian (CDC)?

Nazwa kolumny Typ danych Description
session_id int Identyfikator sesji.

0 = dane zwrócone w tym wierszu są sumą wszystkich sesji od ostatniego uruchomienia instancji SQL Server.
start_time datetime Czas na rozpoczęcie sesji.

Gdy = session_id 0, rozpoczęło się zbieranie danych zagregowanych w czasie.
end_time datetime Czas zakończenia sesji.

NULL = sesja jest aktywna.

Gdy session_id = 0, czas zakończenia ostatniej sesji.
czas trwania int Czas trwania sesji (w sekundach).

0 = sesja nie zawiera transakcji przechwytywania danych zmian.

Gdy = session_id 0, suma czasu trwania (w sekundach) wszystkich sesji z transakcjami przechwytywania zmian danych.
scan_phase nvarchar(200) Obecna faza sesji. Poniżej przedstawiono możliwe wartości i ich opisy:

1: Konfiguracja odczytu
2: Pierwsze skanowanie, budowanie tablicy skrótu
3: Drugie skanowanie
4: Drugie skanowanie
5: Drugie skanowanie
6: Wersjonowanie schematów
7: Ostatnie skanowanie
8: Gotowe

Gdy = session_id 0, ta wartość zawsze jest "Agregat".
error_count int Liczba napotkanych błędów.

Gdy session_id = 0, to całkowita liczba błędów we wszystkich sesjach.
start_lsn nvarchar(23) Zaczynam LSN na sesję.

Gdy = session_id 0, to początkowy LSN dla ostatniej sesji.
current_lsn nvarchar(23) Aktualny LSN jest skanowany.

Gdy = session_id 0, aktualny LSN wynosi 0.
end_lsn nvarchar(23) Zakończenie LSN na sesję.

NULL = sesja jest aktywna.

Gdy session_id = 0, końcowy LSN dla ostatniej sesji.
tran_count bigint Liczba przetworzonych transakcji przechwytywania zmian danych. Ten licznik jest aktywowany w fazie 2.

Gdy = session_id 0, liczba przetworzonych transakcji we wszystkich sesjach.
last_commit_lsn nvarchar(23) LSN ostatniego zapisu logu commitu przetworzony.

Gdy = session_id 0, ostatni commit zapisuje LSN dla dowolnej sesji.
last_commit_time datetime Czas przetwarzania ostatniego zapisu logu commit.

Gdy = session_id 0, czas jest ostatnim zapisem logu commitu dla dowolnej sesji.
log_record_count bigint Liczba zeskanowanych rejestrów dziennika.

Gdy = session_id 0, liczba zeskanowanych rekordów dla wszystkich sesji.
schema_change_count int Wykryta liczba operacji języka definicji danych (DDL). Ten licznik jest wypełniany w fazie 6.

Gdy = session_id 0, liczba operacji DDL wykonanych we wszystkich sesjach.
command_count bigint Liczba przetworzonych komend.

Gdy session_id = 0, liczba poleceń przetworzonych we wszystkich sesjach.
first_begin_cdc_lsn nvarchar(23) Pierwszy LSN zawierał transakcje przechwytywania danych zmian.

Gdy = session_id 0, pierwszy LSN zawierający transakcje przechwytywania danych zmianowych.
last_commit_cdc_lsn nvarchar(23) LSN ostatniego zapisu logu commit, który zawierał transakcje przechwytywania zmian.

Gdy = session_id 0, ostatni zapis zatwierdzenia jest LSN dla każdej sesji zawierającej transakcje przechwytywania danych zmian
last_commit_cdc_time datetime Czas przetwarzania ostatniego zapisu zatwierdzeń zawierającego transakcje przechwytywania zmian.

Gdy = session_id 0, to czas ostatniego zapisu zatwierdzeń dla każdej sesji zawierającej transakcje przechwytywania danych zmian.
Opóźnienie int Różnica, w sekundach, między end_time i last_commit_cdc_time w trakcie sesji. Ten licznik pojawia się na końcu fazy 7.

Gdy session_id = 0, ostatnia wartość opóźnienia niezerowa zarejestrowana przez sesję.
empty_scan_count int Liczba kolejnych sesji, które nie zawierały transakcji przechwytywania danych o zmianie.
failed_sessions_count int Liczba sesji, które się nie powiodły.

Uwagi

DMV sys.dm_cdc_log_scan_sessions zawiera do 32 sesji skanowania oraz agregację wszystkich sesji skanowania z .session_id= 0 W danym momencie ten dynamiczny widok zarządzania może zawierać maksymalnie 33 wiersze.

Permissions

Wymaga uprawnień VIEW DATABASE STATE do zapytań w dynamicznym widoku sys.dm_cdc_log_scan_sessions zarządzania. Więcej informacji o uprawnieniach w dynamicznych widokach zarządzania można znaleźć w Dynamicznych Widokach i Funkcjach Zarządzania (Transact-SQL).

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI BAZY DANYCH w bazie danych.

Przykłady

Poniższy przykład zwraca informacje o najaktualnszej sesji.

USE AdventureWorks2022;  
GO  
SELECT session_id, start_time, end_time, duration, scan_phase,  
    error_count, start_lsn, current_lsn, end_lsn, tran_count,  
    last_commit_lsn, last_commit_time, log_record_count, schema_change_count,  
    command_count, first_begin_cdc_lsn, last_commit_cdc_lsn,   
    last_commit_cdc_time, latency, empty_scan_count, failed_sessions_count  
FROM sys.dm_cdc_log_scan_sessions  
WHERE session_id = (SELECT MAX(b.session_id) FROM sys.dm_cdc_log_scan_sessions AS b);  
GO  

Dalsze kroki