Отслеживание измененных данных — sys.dm_cdc_log_scan_sessions
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Возвращает одну строку для каждого сеанса просмотра журнала в текущей базе данных. Последняя строка соответствует текущему сеансу. Вы можете использовать это представление для получения сведений о состоянии текущего сеанса проверки журнала либо агрегированных сведений обо всех сеансах с момента последнего запуска экземпляра SQL Server.
Записи sys.dm_cdc_log_scan_sessions
сбрасываются всякий раз, когда экземпляр SQL Server перезапускается или после отработки отказа. Кроме того, если запрашиваемая база данных находится в вторичной роли группы доступности AlwaysOn, то записи не возвращаются.
Дополнительные сведения см. в статье "Что такое запись измененных данных(CDC)"?
Имя столбца | Тип данных | Description |
---|---|---|
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