Sql-Server
為什麼 T-log 備份後不截斷 T-log?
我有一個完全恢復模式的數據庫 myDB。我進行了完整備份並在測試伺服器上恢復了它。之後,我檢查了 T-log 的大小。t-log 的大小為 15600 MB,總空間中的已用空間為 351 MB。我決定截斷那些 351 MB 並執行 T-log 備份。不幸的是,大小根本沒有改變。它再次顯示 351 MB。然後我進行了其他後續的 t-log 備份。大小還是351。為什麼t-log備份不截斷日誌文件?我不是在問收縮,我只是想知道為什麼 t-log 不截斷 t-log。
以下是有關 t-log 的一些詳細資訊:
從
DBCC LOGINFO
從查詢
log_reuse_wait_desc
:關於T-log的大小:
第一個螢幕截圖中的第 8 行顯示文件中似乎是活動的 VLF。如果 VLF 中有單個活動日誌記錄,則整個 VLF 將被視為活動日誌,並且該 VLF 不能被截斷。
如果伺服器是 SQL 2016 SP2 或更高版本,您可以使用以下 DMF獲取有關 VLF 的資訊並檢查活動狀態和大小。您可能會發現活動的 VLF 大約為 350 MB,即使只有一個字節處於活動狀態,整個 VLF 也會被視為活動,備份日誌不會將其標記為截斷。
SELECT s.[name], l.vlf_size_mb, l.vlf_active FROM sys.databases s CROSS APPLY sys.dm_db_log_info(s.database_id) l
進一步閱讀: