Delen via


sys.dm_db_log_stats (Transact-SQL)

Van toepassing op: SQL Server 2016 (13.x) SP2 en latere versies Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Geeft samenvattende attributen en informatie terug in transactielogbestanden van databases. Gebruik deze informatie voor monitoring en diagnostiek van de gezondheid van transactielogboeken.

Transact-SQL syntaxis-conventies

Syntaxis

 sys.dm_db_log_stats ( database_id )

Arguments

database_id | NULL | VERSTEK

Is de ID van de database. database_id is int. Geldige invoer zijn het ID-nummer van een database, NULL, of DEFAULT. De standaardwaarde is NULL. NULL en DEFAULT zijn equivalente waarden in de context van de huidige database.
De ingebouwde functie DB_ID kan worden opgegeven. Bij gebruik zonder DB_ID het specificeren van een databasenaam moet het compatibiliteitsniveau van de huidige database 90 of hoger zijn.

Teruggegeven tabellen

Kolomnaam Gegevenstype Description
database_id int Database-id.

In Azure SQL Database zijn de waarden uniek binnen één database of een elastische pool, maar niet binnen een logische server.
recovery_model nvarchar(60) Herstelmodel van de database. Mogelijke waarden zijn:
EENVOUDIG
BULK_LOGGED
VOLLEDIG
log_min_lsn Nvarchar(24) Huidig startlog-sequentienummer (LSN) in het transactielogboek.
log_end_lsn Nvarchar(24) log volgnummer (LSN) van het laatste logrecord in het transactielogboek.
current_vlf_sequence_number bigint Huidig virtueel logbestand (VLF) volgnummer op het moment van uitvoering.
current_vlf_size_mb float Huidige virtuele logbestandgrootte (VLF) in MB.
total_vlf_count bigint Totaal aantal virtuele logbestanden (VLF's) in het transactielogboek.
total_log_size_mb float Totale grootte van het transactielogboek in MB.
active_vlf_count bigint Totaal aantal actieve virtuele logbestanden (VLF's) in het transactielogboek.
active_log_size_mb float Totale actieve transactieloggrootte in MB.
log_truncation_holdup_reason nvarchar(60) Log de reden waarom afsnijding wordt vertraagd. De waarde is hetzelfde als log_reuse_wait_desc de kolom van sys.databases. (Voor meer gedetailleerde uitleg van deze waarden, zie Het Transactielogboek).
Mogelijke waarden zijn:
NIETS
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
Database Spiegeling
REPLICATIE
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
ANDERE VOORBIJGAANDE U
log_backup_time datetime Back-up tijd voor het laatste transactielogboek.
log_backup_lsn Nvarchar(24) Laatste transactielog-back-up log-sequentienummer (LSN).
log_since_last_log_backup_mb float Loggrootte in MB sinds het laatste transactielog-back-uplognummer (LSN).
log_checkpoint_lsn Nvarchar(24) Laatste checkpointlog-sequentienummer (LSN).
log_since_last_checkpoint_mb float Loggrootte in MB sinds het laatste checkpoint-lognummer (LSN).
log_recovery_lsn Nvarchar(24) Herstellog-sequentienummer (LSN) van de database. Als log_recovery_lsn vóór het checkpoint LSN plaatsvindt, log_recovery_lsn is de oudste actieve transactie LSN, anders log_recovery_lsn is het checkpoint LSN.
log_recovery_size_mb float Loggrootte in MB sinds log recovery log sequence number (LSN).
recovery_vlf_count bigint Totaal aantal virtuele logbestanden (VLF's) dat hersteld moet worden, als er sprake is van failover of serverherstart.

Opmerkingen

Wanneer het wordt uitgevoerd sys.dm_db_log_stats tegen een database die deelneemt aan een Availability Group als secundaire replica, wordt slechts een deelverzameling van de hierboven beschreven velden teruggegeven. Momenteel wordt alleen database_id, recovery_model, en log_backup_time wordt teruggegeven wanneer het wordt uitgevoerd tegen een secundaire database.

Permissions

Hiervoor is de VIEW SERVER STATE machtiging in de database vereist.

Machtigingen voor SQL Server 2022 en hoger

Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.

Voorbeelden

Eén. Databases bepalen in een SQL Server-instantie met een hoog aantal VLF's

De volgende query geeft de databases terug met meer dan 100 VLF's in de logbestanden. Grote aantallen VLF's kunnen de opstart-, herstel- en hersteltijd van de database beïnvloeden.

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. Databases bepalen in een SQL Server-instantie met back-ups van transactielogboeken ouder dan 4 uur

De volgende query bepaalt de laatste logback-uptijden voor de databases in de instantie.

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

Zie ook

Dynamische beheerweergaven en -functies (Transact-SQL)
databasegerelateerde dynamische beheerweergaven (Transact-SQL)
sys.dm_db_log_space_usage (Transact-SQL)
sys.dm_db_log_info (Transact-SQL)