Teilen über


sys.dm_db_log_stats (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) SP 2 und höher Azure SQL-Datenbank Azure SQL verwaltete Instanz

Gibt Attribute der Zusammenfassungsebene und Informationen zu Transaktionsprotokolldateien von Datenbanken zurück. Verwenden Sie diese Informationen für die Überwachung und Diagnose der Integrität des Transaktionsprotokolls.

Transact-SQL-Syntaxkonventionen

Syntax

 sys.dm_db_log_stats ( database_id )

Argumente

database_id | NULL | VORGABE

Ist die ID der Datenbank. database_id ist int. Gültige Eingaben sind die ID-Nummer einer Datenbank, NULLoder DEFAULT. Der Standardwert ist NULL. NULL und DEFAULT sind gleichwertige Werte im Kontext der aktuellen Datenbank.
Die integrierte Funktion DB_ID kann angegeben werden. Bei Verwendung DB_ID ohne Angabe eines Datenbanknamens muss die Kompatibilitätsebene der aktuellen Datenbank 90 oder höher sein.

Zurückgegebene Tabellen

Spaltenname Datentyp Beschreibung
database_id int Datenbank-ID

In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines elastischen Pools eindeutig, aber nicht innerhalb eines logischen Servers.
recovery_model nvarchar(60) Wiederherstellungsmodell der Datenbank. Mögliche Werte sind:
SIMPLE
BULK_LOGGED
VOLLSTÄNDIG
log_min_lsn nvarchar(24) Aktuelle Startprotokollsequenznummer (LSN) im Transaktionsprotokoll.
log_end_lsn nvarchar(24) Logsequenznummer (LSN) des letzten Protokolldatensatzes im Transaktionsprotokoll.
current_vlf_sequence_number bigint Aktuelle VLF-Sequenznummer (Virtual Log File) zum Zeitpunkt der Ausführung.
current_vlf_size_mb float Aktuelle Größe der virtuellen Protokolldatei (Virtual Log File, VLF) in MB.
total_vlf_count bigint Die Gesamtzahl der virtuellen Protokolldateien (VLFs) im Transaktionsprotokoll.
total_log_size_mb float Gesamtgröße des Transaktionsprotokolls in MB.
active_vlf_count bigint Die Gesamtzahl der aktiven virtuellen Protokolldateien (VLFs) im Transaktionsprotokoll.
active_log_size_mb float Gesamtgröße des aktiven Transaktionsprotokolls in MB.
log_truncation_holdup_reason nvarchar(60) Protokollabkürzungs-Haltegrund. Der Wert entspricht log_reuse_wait_desc der Spalte von sys.databases. (Ausführlichere Erläuterungen zu diesen Werten finden Sie unter Das Transaktionsprotokoll).
Mögliche Werte sind:
NOTHING
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
DATABASE_MIRRORING
REPLIKATION
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
ANDERE VORÜBERGEHENDE
log_backup_time datetime Letzte Sicherungszeit des Transaktionsprotokolls.
log_backup_lsn nvarchar(24) Letzte Sicherungsprotokoll-Sequenznummer (Backup Log Sequence Number, LSN) des letzten Transaktionsprotokolls.
log_since_last_log_backup_mb float Log size in MB since last transaction log sequence number (LSN).
log_checkpoint_lsn nvarchar(24) Letzte Sequenznummer des Prüfpunktprotokolls (LSN).
log_since_last_checkpoint_mb float Log size in MB since last checkpoint log sequence number (LSN).
log_recovery_lsn nvarchar(24) Sequenznummer des Wiederherstellungsprotokolls (Recovery Log Sequence Number, LSN) der Datenbank. Wenn log_recovery_lsn vor dem Prüfpunkt LSN auftritt, log_recovery_lsn ist die älteste aktive Transaktion LSN, andernfalls log_recovery_lsn der Prüfpunkt LSN.
log_recovery_size_mb float Log size in MB since log recovery log sequence number (LSN).
recovery_vlf_count bigint Die Gesamtzahl der virtuellen Protokolldateien (VLFs), die wiederhergestellt werden sollen, wenn failover oder serverneu gestartet wurde.

Hinweise

Wenn sie sys.dm_db_log_stats für eine Datenbank ausgeführt wird, die an einer Verfügbarkeitsgruppe als sekundäres Replikat teilnimmt, werden nur eine Teilmenge der oben beschriebenen Felder zurückgegeben. Derzeit werden nur database_id, recovery_model, und log_backup_time wird zurückgegeben, wenn sie für eine sekundäre Datenbank ausgeführt wird.

Berechtigungen

Erfordert die Berechtigung VIEW SERVER STATE für die Datenbank.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

Beispiele

A. Ermitteln von Datenbanken in einer SQL Server-Instanz mit hoher Anzahl von VLFs

Die folgende Abfrage gibt die Datenbanken mit mehr als 100 VLFs in den Protokolldateien zurück. Große Anzahl von VLFs kann sich auf den Datenbankstart, die Wiederherstellung und die Wiederherstellungszeit auswirken.

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. Ermitteln von Datenbanken in einer SQL Server-Instanz mit Transaktionsprotokollsicherungen, die älter als 4 Stunden sind

Die folgende Abfrage bestimmt die letzten Protokollsicherungszeiten für die Datenbanken in der Instanz.

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

Weitere Informationen

Dynamische Verwaltungssichten und Funktionen (Transact-SQL)
Mit der Datenbank verbundene dynamische Verwaltungssichten (Transact-SQL)
sys.dm_db_log_space_usage (Transact-SQL)
sys.dm_db_log_info (Transact-SQL)