還原備份後發現日志文件 (LDF) 高達 120GB,SSMS 圖形界面縮減無效,需 T-SQL 強制處理。
SELECT name, recovery_model_desc FROM sys.databases WHERE name = 'TargetDB';
若為 FULL,必須先切換。ALTER DATABASE TargetDB SET RECOVERY SIMPLE;
DBCC SHRINKFILE (N'TargetDB_log', 10); -- 邏輯文件名可用 sys.database_files 查詢
SELECT name, size * 8.0 / 1024 AS SizeMB FROM sys.database_files WHERE type_desc = 'LOG';
ALTER DATABASE TargetDB SET RECOVERY FULL;
BACKUP DATABASE TargetDB TO DISK = 'Path\Full.bak' WITH INIT, COMPRESSION;
FULL 模式下日志只能通過 BACKUP LOG 截斷,若長期未備份日志會無限增長。SIMPLE 模式下 Checkpoint 會自動截斷非活動 VLF,配合 DBCC SHRINKFILE 釋放物理空間。| 風險 | 影響 | 緩解措施 |
|---|---|---|
| 切 SIMPLE 丟失日志備份能力 | 切換期間發生故障無法時間點恢復 | 維護窗口操作、提前通知、確保有最近完整備份 |
| SHRINKFILE 導致索引碎片 | 數據頁移動產生碎片,查詢性能下降 | 縮減後執行 ALTER INDEX ALL ON ... REBUILD 或 REORGANIZE |
| 頻繁縮減/增長 | 文件碎片、磁盤性能抖動 | 預先規劃合理初始大小/自動增長增量(如 512MB/10%),避免反復縮減 |
sys.dm_db_log_space_usage、log_reuse_wait_desc,預警日志增長異常。