sys.dm_db_log_stats (Transact-SQL)

適用於:SQL Server 2016 (13.x) SP 2 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體

傳回資料庫事務歷史記錄檔的摘要層級屬性和資訊。 使用這項資訊來監視和診斷事務歷史記錄健康情況。

Transact-SQL 語法慣例

語法

 sys.dm_db_log_stats ( database_id )

引數

database_id |NULL |預設

資料庫的識別碼。 database_idint。 有效的輸入是資料庫、 NULLDEFAULT的識別碼。 預設值為 NULLNULLDEFAULT 是目前資料庫內容中的對等值。
可以指定內建函數 DB_ID。 在不指定資料庫名稱的情況下使用 DB_ID 時,目前資料庫的相容性層級必須是 90 或更高層級。

傳回的數據表

資料行名稱 資料類型 描述
database_id int 資料庫識別碼。

在 Azure SQL 資料庫 中,這些值在單一資料庫或彈性集區內是唯一的,但在邏輯伺服器內則不是唯一的。
recovery_model nvarchar(60) 資料庫的恢復模式。 可能的值包括:
簡單
BULK_LOGGED
FULL
log_min_lsn nvarchar(24) 事務歷史記錄中目前的開始記錄序號 (LSN)。
log_end_lsn nvarchar(24) 事務歷史記錄中最後一筆記錄檔記錄的記錄序號 (LSN)。
current_vlf_sequence_number bigint 執行時目前的 虛擬記錄檔 (VLF) 序號。
current_vlf_size_mb float 目前的 虛擬記錄檔 (VLF) 大小以 MB 為單位。
total_vlf_count bigint 事務歷史記錄中的虛擬記錄檔總數
total_log_size_mb float 以 MB 為單位的事務歷史記錄大小總計。
active_vlf_count bigint 事務歷史記錄中的使用 中虛擬記錄檔總數
active_log_size_mb float 以 MB 為單位的作用中事務歷史記錄大小總計。
log_truncation_holdup_reason nvarchar(60) 記錄截斷保留原因。 值與 log_reuse_wait_desc 的數據 sys.databases行相同。 (如需這些值的詳細說明,請參閱 事務歷史記錄檔)。
可能的值包括:
NOTHING
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
DATABASE_MIRRORING
複寫
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
其他暫時性
log_backup_time datetime 上次事務歷史記錄備份時間。
log_backup_lsn nvarchar(24) 上次事務歷程記錄備份 記錄序號 (LSN)
log_since_last_log_backup_mb float 自從上次事務歷史記錄備份 記錄序號 (LSN) 之後,以 MB 為單位的記錄大小。
log_checkpoint_lsn nvarchar(24) 最後檢查點 記錄序號 (LSN)
log_since_last_checkpoint_mb float 自上次檢查點 記錄序號 (LSN) 以來,以 MB 為單位的記錄大小。
log_recovery_lsn nvarchar(24) 資料庫的復原記錄序號 (LSN)。 如果在 log_recovery_lsn 檢查點 LSN 之前發生, log_recovery_lsn 則為最舊的使用中交易 LSN,否則 log_recovery_lsn 為檢查點 LSN。
log_recovery_size_mb float 記錄大小,以 MB 為單位,因為記錄復原 記錄序號 (LSN)
recovery_vlf_count bigint 如果有故障轉移或伺服器重新啟動,要復原的 虛擬記錄檔 總數。

備註

針對參與可用性群組做為次要複本的資料庫執行 sys.dm_db_log_stats 時,只會傳回上述字段的子集。 目前,只有在 database_id對輔助資料庫執行時,才會傳回、 recovery_modellog_backup_time

權限

需要資料庫中的 VIEW SERVER STATE 權限。

SQL Server 2022 和更新版本的權限

需要伺服器上的 VIEW SERVER PERFORMANCE STATE 權限。

範例

A. 判斷 SQL Server 實例中具有大量 VDF 的資料庫

下列查詢會傳回記錄檔中有超過100個 VDF 的資料庫。 大量 VDF 可能會影響資料庫啟動、還原和復原時間。

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. 判斷 SQL Server 實例中的資料庫,其事務歷史記錄備份超過 4 小時

下列查詢會決定 實例中資料庫的最後一個記錄備份時間。

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

另請參閱

動態管理檢視和函數 (Transact-SQL)
資料庫相關的動態管理檢視 (Transact-SQL)
sys.dm_db_log_space_usage (Transact-SQL)
sys.dm_db_log_info (Transact-SQL)