sys.dm_db_log_stats (Transact-SQL)
適用於:SQL Server 2016 (13.x) SP 2 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體
傳回資料庫事務歷史記錄檔的摘要層級屬性和資訊。 使用這項資訊來監視和診斷事務歷史記錄健康情況。
語法
sys.dm_db_log_stats ( database_id )
引數
database_id |NULL |違約
資料庫的識別碼。 database_id
為 int
。 有效的輸入是資料庫、 NULL
或 DEFAULT
的識別碼。 預設值為 NULL
。 NULL
和 DEFAULT
是目前資料庫內容中的對等值。
可以指定內建函數 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_model
和 log_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)