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 Managed Instance
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
Die ID der Datenbank. database_id
ist int
. Gültige Eingaben sind die ID-Nummer einer Datenbank, NULL
oder DEFAULT
. Der Standardwert ist NULL
. NULL
und DEFAULT
sind gleichwertige Werte im Kontext der aktuellen Datenbank.
Die integrierte Funktion DB_ID kann angegeben werden. Wenn DB_ID
verwendet wird, ohne dass ein Datenbankname angegeben wird, muss der Kompatibilitätsgrad 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 Pools für elastische Datenbanken 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)