Поделиться через


sys.dm_db_log_stats (Transact-SQL)

Относится к: SQL Server 2016 (13.x) SP2 и более поздние версии Azure SQL Database AzureSQL Managed SQLInstance SQL database in Microsoft Fabric

Функция sys.dm_db_log_stats динамического управления возвращает атрибуты сводного уровня и сведения о файлах журнала транзакций баз данных. Используйте эти сведения для мониторинга и диагностика работоспособности журнала транзакций.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sys.dm_db_log_stats ( database_id )

Аргументы

{ database_id | NULL | DEFAULT }

Идентификатор базы данных. database_id имеет значение int. Допустимые входные данные — это идентификатор базы данных или NULLDEFAULT. Значение по умолчанию — NULL. NULL и DEFAULT эквивалентны значения в контексте текущей базы данных.

Можно также указать встроенную функцию DB_ID для database_id.

Возвращаемые таблицы

Имя столбца Тип данных Description
database_id int Идентификатор базы данных.

В База данных SQL Azure значения уникальны в одной базе данных или эластичном пуле, но не в логическом сервере.
recovery_model nvarchar(60) Модель восстановления базы данных. Возможные значения включают:

SIMPLE
BULK_LOGGED
FULL
log_min_lsn 1 nvarchar(24) Текущий номер последовательности журнала запуска (LSN) в журнале транзакций.
log_end_lsn 1 nvarchar(24) Номер последовательности журнала (LSN) последней записи журнала в журнале транзакций.
current_vlf_sequence_number 2 bigint Текущий номер последовательности виртуального журнала (VLF) во время выполнения.
current_vlf_size_mb 2 float Текущий размер файла виртуального журнала (VLF) в МБ.
total_vlf_count 2 bigint Общее количество файлов виртуальных журналов (VLFs) в журнале транзакций.
total_log_size_mb float Общий размер журнала транзакций в МБ.
active_vlf_count 2 bigint Общее количество активных файлов виртуальных журналов (VLFs) в журнале транзакций.
active_log_size_mb float Общий размер активного журнала транзакций в МБ.
log_truncation_holdup_reason nvarchar(60) Причина удержания усечения журнала. Значение совпадает со log_reuse_wait_desc столбцом sys.databases. (Более подробные объяснения этих значений см. в журнале транзакций).
Возможные значения включают:

NOTHING
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
DATABASE_MIRRORING
REPLICATION
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
OTHER TRANSIENT
log_backup_time datetime Время начала резервного копирования журнала транзакций.
log_backup_lsn 1 nvarchar(24) Последний номер последовательности журналов резервного копирования журналов транзакций (LSN).
log_since_last_log_backup_mb 1 float Размер журнала в МБ с момента последнего номера последовательности журналов резервного копирования журнала транзакций (LSN).
log_checkpoint_lsn 1 nvarchar(24) Последний номер последовательности журнала контрольной точки (LSN).
log_since_last_checkpoint_mb 1 float Размер журнала в МБ после последнего номера последовательности журналов контрольной точки (LSN).
log_recovery_lsn 1 nvarchar(24) Номер последовательности журнала восстановления (LSN) базы данных. Если log_recovery_lsn это происходит до LSN контрольной точки, log_recovery_lsn является самой старой активной транзакцией LSN, в противном случае log_recovery_lsn используется LSN контрольной точки.
log_recovery_size_mb 1 float Размер журнала в МБ с номером последовательности журнала восстановления журнала (LSN).
recovery_vlf_count 2 bigint Общее количество файлов виртуальных журналов (VLFs), которые необходимо восстановить, если произошел отработка отказа или перезапуск сервера.

1 Дополнительные сведения см. в разделе "Номер последовательности журналов" (LSN).

2 Дополнительные сведения см. в файле виртуального журнала (VLF).

Замечания

При запуске sys.dm_db_log_stats базы данных, которая участвует в группе доступности в качестве вторичной реплики, запрос возвращает только подмножество полей, описанных в предыдущей таблице. В настоящее время запрос возвращает только database_idзапрос и recovery_modellog_backup_time при запуске в базе данных-получателе.

Разрешения

ДЛЯ SQL Server 2019 (15.x) и более ранних версий требуется VIEW SERVER STATE разрешение на сервере.

ДЛЯ SQL Server 2022 (16.x) и более поздних версий требуется VIEW SERVER PERFORMANCE STATE разрешение на сервере.

Примеры

А. Определение баз данных в экземпляре SQL Server с большим количеством VLFs

Следующий запрос возвращает базы данных с более чем 100 VLFs в файлах журнала. Большое количество VLFs может повлиять на время запуска, восстановления и восстановления базы данных.

SELECT name AS 'Database Name',
       total_vlf_count AS 'VLF count'
FROM sys.databases AS s
    CROSS APPLY sys.dm_db_log_stats(s.database_id)
WHERE total_vlf_count > 100;

B. Определение баз данных в экземпляре SQL Server с резервными копиями журнала транзакций старше 4 часов

Следующий запрос определяет время начала последнего резервного копирования журналов для баз данных в экземпляре.

SELECT name AS 'Database Name',
       log_backup_time AS 'last log backup start time'
FROM sys.databases AS s
    CROSS APPLY sys.dm_db_log_stats(s.database_id);