Отслеживание измененных данных — sys.dm_cdc_log_scan_sessions

Применяется к:SQL ServerAzure SQL DatabaseAzure, управляемому экземпляру SQL Azure

Возвращает одну строку для каждого сеанса просмотра журнала в текущей базе данных. Последняя строка соответствует текущему сеансу. Вы можете использовать это представление для получения сведений о состоянии текущего сеанса проверки журнала либо агрегированных сведений обо всех сеансах с момента последнего запуска экземпляра SQL Server.

Записи sys.dm_cdc_log_scan_sessions сбрасываются всякий раз, когда экземпляр SQL Server перезапускается или после отработки отказа. Кроме того, если запрашиваемая база данных находится в вторичной роли группы доступности AlwaysOn, то записи не возвращаются.

Дополнительные сведения см. в статье "Что такое запись измененных данных(CDC)"?

Имя столбца Тип данных Описание:
session_id int Идентификатор сеанса.

Значение 0 в данной строке означает, что возвращаемые данные представляют собой статистику всех сеансов с момента последнего запуска экземпляра SQL Server.
start_time datetime Время начала сеанса.

Когда session_id = 0 — время начала сбора агрегированных данных.
end_time datetime Время окончания сеанса.

NULL = сеанс активен.

Когда session_id = 0 — время окончания последнего сеанса.
duration int Продолжительность сеанса в секундах.

Значение 0 означает, что сеанс не содержит транзакций системы отслеживания измененных данных.

Когда session_id = 0 — суммарная длительность (в секундах) всех сеансов, содержащих транзакции отслеживания измененных данных.
scan_phase nvarchar(200) Текущая стадия сеанса. Ниже приведены возможные значения и их описание.

1: чтение конфигурации
2: первое сканирование, построение хэш-таблицы
3: второе сканирование
4: второе сканирование
5: второе сканирование
6: управление версиями схемы
7: последнее сканирование
8: готово

При session_id = 0 это значение всегда имеет значение "Aggregate" (статистика).
error_count int Количество обнаруженных ошибок.

При session_id = 0 содержит общее количество ошибок во всех сеансах.
start_lsn nvarchar(23) Начальный номер LSN для сеанса.

При session_id = 0 содержит начальный номер LSN для последнего сеанса.
current_lsn nvarchar(23) Текущий номер LSN, который был просмотрен.

При session_id = 0 текущий LSN — 0.
end_lsn nvarchar(23) Конечный номер LSN сеанса.

NULL = сеанс активен.

При session_id = 0 содержит конечный номер LSN для последнего сеанса.
tran_count bigint Количество проведенных транзакций системы отслеживания измененных данных. Этот счетчик заполняется на второй стадии.

При session_id = 0 содержит количество обработанных транзакций во всех сеансах.
last_commit_lsn nvarchar(23) Номер LSN последней обработанной записи в журнале фиксирования.

При session_id = 0 содержит номер LSN последней записи журнала фиксации для любого сеанса.
last_commit_time datetime Время последней обработки записи в журнале фиксирования.

При session_id = 0 содержит время последней записи журнала фиксации для любого сеанса.
log_record_count bigint Количество просмотренных записей журнала.

При session_id = 0 содержит количество проверенных записей для всех сеансов.
schema_change_count int Количество обнаруженных операций языка DDL. Значение данного счетчика заполняется на шестой стадии.

Приsession_id = 0 содержит количество операций языка DDL, обработанных во всех сеансах.
command_count bigint Количество выполненных команд.

При session_id = 0 содержит количество команд, обработанных во всех сеансах.
first_begin_cdc_lsn nvarchar(23) Первый номер LSN, содержащий транзакции системы отслеживания измененных данных.

При session_id = 0 содержит первый номер LSN, содержащий транзакции отслеживания измененных данных.
last_commit_cdc_lsn nvarchar(23) Номер LSN последней записи в журнале фиксирования, содержащей транзакции системы отслеживания измененных данных.

При session_id = 0 содержит номер LSN последней записи в журнале фиксации, содержащей транзакции отслеживания измененных данных для любого сеанса.
last_commit_cdc_time datetime Время обработки последней записи в журнале фиксирования, содержащей транзакции системы отслеживания измененных данных.

При session_id = 0 содержит время последней записи в журнале фиксации, содержащей транзакции отслеживания измененных данных для любого сеанса.
latency int Разница в секундах между end_time и last_commit_cdc_time в сеансе. Этот счетчик заполняется в конце седьмой стадии.

При session_id = 0 содержит последнее ненулевое значение задержки, зарегистрированное сеансом.
empty_scan_count int Количество последовательных сеансов, не содержащих транзакций системы отслеживания измененных данных.
failed_sessions_count int Число сеансов, завершившихся неудачно.

Замечания

DmV sys.dm_cdc_log_scan_sessions содержит до 32 сеансов сканирования и агрегат всех сеансов сканирования с session_id= 0. Таким образом, в любое время это динамическое административное представление может содержать не более 33 строк.

Разрешения

Для выполнения запросов к динамическому административному представлению sys.dm_cdc_log_scan_sessions требуется разрешение VIEW DATABASE STATE. Более подробные сведения о разрешениях динамических административных представлений см. в разделе Динамические административные представления и функции (Transact-SQL).

Разрешения для SQL Server 2022 и более поздних версий

Требуется разрешение VIEW DATABASE PERFORMANCE STATE для базы данных.

Примеры

В следующем примере возвращается информация о самом последнем сеансе.

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  

Далее