情境:LDF 檔案佔用 23GB,但 DBCC SQLPERF(LOGSPACE) 顯示實際使用 < 1%。嘗試 DBCC SHRINKFILE、切換復原模式 (FULL↔SIMPLE) 皆無法釋放空間,報錯:Cannot shrink log file 2 because of minimum log space required.
READ_ONLY/SINGLE_USER。xxx_log.ldf。.mdf → 系統提示找不到記錄檔 → 移除 該記錄檔項目 → 確定。.mdf 同目錄建立新 .ldf (約 500KB)。.ldf 移動至目標磁碟。-- 1. 封鎖寫入
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- 2. 分離
EXEC sp_detach_db 'MyDB';
-- 3. 手動刪除/移動 LDF 檔案 (需 xp_cmdshell 或外部操作)
-- 4. 附加重建記錄檔
CREATE DATABASE MyDB
ON (FILENAME = 'D:\Data\MyDB.mdf')
FOR ATTACH_REBUILD_LOG;
GO
DBCC SQLPERF(LOGSPACE) 與 VLF 數量 (DBCC LOGINFO),VLF > 1000 時考慮縮減初始大小與成長增量。分離刪除重建是「最後手段」,務必在維護視窗執行並立即補完整備份。