sys.dm_db_log_stats (Transact-SQL)

Gäller för: SQL Server 2016 (13.x) SP2 och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceSQL database i Microsoft Fabric

Returnerar attribut på sammanfattningsnivå och information i transaktionsloggfiler i databaser. Använd denna information för övervakning och diagnostik av transaktionsloggens hälsa.

Transact-SQL syntaxkonventioner

Syntax

 sys.dm_db_log_stats ( database_id )

Arguments

database_id | NULL | STANDARD

Är databasens ID. database_id är int. Giltiga indata är databasens ID-nummer, NULL, eller DEFAULT. Standardvärdet är NULL. NULL och DEFAULT är ekvivalenta värden i kontexten av den aktuella databasen.
Den inbyggda funktionen DB_ID kan anges. Vid användning DB_ID utan att specificera ett databasnamn måste kompatibilitetsnivån för den aktuella databasen vara 90 eller högre.

Tabeller som returnerades

Kolumnnamn Datatyp Description
database_id int Databas-ID.

I Azure SQL Database är värdena unika i en enskild databas eller en elastisk pool, men inte inom en logisk server.
recovery_model nvarchar(60) Återställningsmodell för databasen. Möjliga värden inkluderar:
ENKEL
BULK_LOGGED
FULLT
log_min_lsn Nvarchar(24) Aktuellt startloggsekvensnummer (LSN) i transaktionsloggen.
log_end_lsn Nvarchar(24) log sekvensnummer (LSN) för den senaste loggposten i transaktionsloggen.
current_vlf_sequence_number bigint Aktuellt följenummer för virtuell loggfil (VLF) vid exekveringstillfället.
current_vlf_size_mb float Nuvarande virtuell loggfilstorlek (VLF) i MB.
total_vlf_count bigint Totalt antal virtuella loggfiler (VLF) i transaktionsloggen.
total_log_size_mb float Total transaktionsloggstorlek i MB.
active_vlf_count bigint Totalt antal aktiva virtuella loggfiler (VLF) i transaktionsloggen.
active_log_size_mb float Total aktiv transaktionsloggstorlek i MB.
log_truncation_holdup_reason nvarchar(60) Logga orsaken till fördröjningen av trunkeringen. Värdet är samma som log_reuse_wait_desc kolumnen i sys.databases. (För mer detaljerade förklaringar av dessa värden, se The Transaction Log).
Möjliga värden inkluderar:
INGENTING
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
DATABASE_MIRRORING
REPLIKERING
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
ANDRA ÖVERGÅENDE
log_backup_time datetime Sista transaktionsloggens säkerhetskopieringstid.
log_backup_lsn Nvarchar(24) Sista transaktionsloggens backup-logg sekvensnummer (LSN).
log_since_last_log_backup_mb float Loggstorlek i MB sedan senaste transaktionslogg backup logg sekvensnummer (LSN).
log_checkpoint_lsn Nvarchar(24) Sista kontrollpunktsloggens sekvensnummer (LSN).
log_since_last_checkpoint_mb float Loggstorlek i MB sedan senaste checkpoint-loggsekvensnummer (LSN).
log_recovery_lsn Nvarchar(24) Återställningsloggens sekvensnummer (LSN) för databasen. Om det log_recovery_lsn sker före kontrollpunkten är LSN log_recovery_lsn den äldsta aktiva transaktionen LSN, annars log_recovery_lsn är kontrollpunktens LSN.
log_recovery_size_mb float Loggstorlek i MB sedan loggåterhämtningssekvensnummer (LSN).
recovery_vlf_count bigint Totalt antal virtuella loggfiler (VLF) som ska återställas, om det sker en failover eller serveromstart.

Anmärkningar

När man kör sys.dm_db_log_stats mot en databas som deltar i en tillgänglighetsgrupp som sekundär replik, returneras endast en delmängd av de fält som beskrivs ovan. För närvarande kommer endast database_id, recovery_model, och log_backup_time returneras när den körs mot en sekundär databas.

Permissions

Kräver behörigheten VIEW SERVER STATE i databasen.

Behörigheter för SQL Server 2022 och senare

Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.

Examples

A. Bestämning av databaser i en SQL Server-instans med ett högt antal VLF:er

Följande fråga returnerar databaserna med mer än 100 VLF:er i loggfilerna. Stora mängder VLF:er kan påverka databasens start-, återställnings- och återställningstid.

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. Att bestämma databaser i en SQL Server-instans med transaktionslogg-backuper äldre än 4 timmar

Följande fråga bestämmer de senaste loggbackuptiderna för databaserna i instansen.

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

Se även

Dynamiska hanteringsvyer och funktioner (Transact-SQL)
databasrelaterade dynamiska hanteringsvyer (Transact-SQL)
sys.dm_db_log_space_usage (Transact-SQL)
sys.dm_db_log_info (Transact-SQL)