Preskočiť na obsah
Skript

Transaction log – obsadenie, reuse wait a VLF

Veľkosť a aktívna časť logu, počet VLF, dôvod, prečo sa log nedá orezať, a čas posledného log backupu pre každú databázu.

transaction-log-obsadenie-reuse-wait-a-vlf.sql 27 riadkov · T-SQL
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | Transaction log – obsadenie, reuse wait a VLF
   Účel:  Veľkosť a aktívna časť logu, počet VLF, dôvod, prečo sa log nedá orezať, a čas posledného log backupu pre každú databázu.
   Režim: READ ONLY | SQL Server 2016 SP2 – 2022, on-premises
*/
SET NOCOUNT ON;

-- Na SQL Server 2016 RTM/SP1 funkcia sys.dm_db_log_stats nemusí existovať.
IF CONVERT(int,SERVERPROPERTY('ProductMajorVersion')) = 13
   AND CONVERT(int,PARSENAME(CONVERT(varchar(50),SERVERPROPERTY('ProductVersion')),2)) < 5026
BEGIN
  PRINT N'sys.dm_db_log_stats nie je dostupná (vyžaduje SQL Server 2016 SP2+).';
END
ELSE
BEGIN
  EXEC(N'
    SELECT d.name AS database_name, d.recovery_model_desc,
           d.log_reuse_wait_desc,
           s.total_vlf_count, s.active_vlf_count,
           s.total_log_size_mb, s.active_log_size_mb,
           s.log_truncation_holdup_reason,
           s.log_backup_time
    FROM sys.databases AS d
    CROSS APPLY sys.dm_db_log_stats(d.database_id) AS s
    WHERE d.state_desc = ''ONLINE'' AND d.database_id > 4
    ORDER BY s.total_log_size_mb DESC;');
END;
## Kedy použiť

Keď sa zapĺňa LOG disk, recovery trvá dlho alebo je transaction log neprimerane veľký.

## Ako čítať výsledok

`active_log_size_mb` blízko `total_log_size_mb` = log je plný. `log_truncation_holdup_reason` (napr. LOG_BACKUP, ACTIVE_TRANSACTION, AVAILABILITY_REPLICA) hovorí, čo bráni orezaniu. Tisíce VLF spomaľujú štart a restore databázy.

> [!WARNING]
> `sys.dm_db_log_stats` existuje od SQL Server 2016 SP2 – na starších buildoch skript len vypíše upozornenie. Log nezmenšuj (SHRINKFILE), kým nepoznáš príčinu rastu.

**Oprávnenia:** `VIEW SERVER STATE` (na SQL Server 2022 stačí aj `VIEW SERVER PERFORMANCE STATE`).  
**Režim:** READ ONLY · **Verzia:** SQL Server 2016 SP2 – 2022

## Súvisiace recepty

- [Otvorené transakcie](script.php?id=15&s=otvorene-transakcie-kto-ich-drzi-a-ako-dlho)
- [Inventár databáz](script.php?id=12&s=inventar-databaz-recovery-model-compat-level-rcsi)