sys.dm_db_log_stats (Transact-SQL)

Platí na: SQL Server 2016 (13.x) SP2 a pozdější verze Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Funkce sys.dm_db_log_stats dynamické správy vrací atributy souhrnné úrovně a informace o souborech transakčních protokolů databází. Tyto informace použijte pro monitorování a diagnostiku stavu transakčních logů.

Transact-SQL konvence syntaxe

Syntax

sys.dm_db_log_stats ( database_id )

Argumenty

{ database_id | NULL | DEFAULT }

ID databáze. database_id je int. Platné vstupy jsou číslo ID databáze, NULLnebo DEFAULT. Výchozí hodnota je NULL. NULL a DEFAULT jsou ekvivalentní hodnoty v kontextu aktuální databáze.

Můžete také zadat předdefinované DB_ID funkce pro database_id.

Vrácené tabulky

Název sloupce Datový typ Description
database_id int ID databáze.

Ve službě Azure SQL Database jsou hodnoty jedinečné v rámci jedné databáze nebo elastického fondu, ale ne v rámci logického serveru.
recovery_model nvarchar(60) Model obnovy databáze. Mezi možné hodnoty patří:

SIMPLE
BULK_LOGGED
FULL
log_min_lsn 1 nvarchar(24) Aktuální počáteční pořadové číslo protokolu (LSN) v transakčním protokolu.
log_end_lsn 1 nvarchar(24) pořadové číslo protokolu (LSN) posledního záznamu protokolu v transakčním protokolu.
current_vlf_sequence_number 2 bigint Aktuální pořadové číslo souboru virtuálního protokolu (VLF) v době provádění
current_vlf_size_mb 2 float Aktuální velikost souboru virtuálního protokolu (VLF) v MB.
total_vlf_count 2 bigint Celkový počet souborů virtuálních protokolů (VLF) v transakčním protokolu.
total_log_size_mb float Celková velikost transakčního logu v MB.
active_vlf_count 2 bigint Celkový počet aktivních souborů virtuálních protokolů (VLF) v transakčním protokolu.
active_log_size_mb float Celková velikost aktivního transakčního logu v MB.
log_truncation_holdup_reason nvarchar(60) Důvod zdržení logaritmu zkrácení. Hodnota je stejná jako log_reuse_wait_desc sloupec .sys.databases (Podrobnější vysvětlení těchto hodnot najdete v transakčním protokolu).
Mezi možné hodnoty patří:

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 Čas spuštění posledního zálohování transakčního protokolu.
log_backup_lsn 1 nvarchar(24) Pořadové číslo posledního protokolu zálohování transakčního protokolu (LSN).
log_since_last_log_backup_mb 1 float Velikost protokolu v MB od posledního pořadové číslo protokolu zálohování transakčních protokolů (LSN).
log_checkpoint_lsn 1 nvarchar(24) Poslední pořadové číslo protokolu kontrolního bodu (LSN).
log_since_last_checkpoint_mb 1 float Velikost protokolu v MB od posledního pořadového čísla protokolu kontrolního bodu (LSN).
log_recovery_lsn 1 nvarchar(24) Pořadové číslo protokolu obnovení (LSN) databáze. Pokud log_recovery_lsn nastane před kontrolním bodem, log_recovery_lsn LSN je nejstarší aktivní transakční LSN, jinak log_recovery_lsn je to kontrolní LSN.
log_recovery_size_mb 1 float Velikost protokolu v MB od pořadové číslo protokolu obnovení protokolu (LSN).
recovery_vlf_count 2 bigint Celkový počet souborů virtuálních protokolů, které se mají obnovit, pokud došlo k převzetí služeb při selhání nebo restartování serveru.

1 Další informace najdete v tématu pořadové číslo protokolu (LSN).

2 Další informace naleznete v souboru virtuálního protokolu (VLF).

Poznámky

Když spustíte sys.dm_db_log_stats databázi, která se účastní skupiny dostupnosti jako sekundární replika, dotaz vrátí pouze podmnožinu polí popsaných v předchozí tabulce. V současné době dotaz vrací pouze database_ida recovery_modellog_backup_time při spuštění v sekundární databázi.

Povolení

SQL Server 2019 (15.x) a starší verze vyžadují VIEW SERVER STATE oprávnění na serveru.

SQL Server 2022 (16.x) a novější verze vyžadují VIEW SERVER PERFORMANCE STATE oprávnění na serveru.

Examples

A. Určení databází v instanci SQL Serveru s vysokým počtem VLF

Následující dotaz vrací databáze s více než 100 VLF v logovacích souborech. Velké množství VLF může ovlivnit čas spuštění, obnovy a obnovy databáze.

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. Určení databází v instanci SQL Serveru se zálohováním transakčních protokolů starším než 4 hodiny

Následující dotaz určuje časy posledního spuštění zálohování protokolů pro databáze v instanci.

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);