問題場景
資料庫 `CNBlogsText` 記錄檔佔 23GB,實際記錄 <1GB。執行 `DBCC SHRINKFILE` 報錯:
Cannot shrink log file 2 (CNBlogsText_log) because of minimum log space required.
常規方法失效
切換簡單模式 → Shrink → 切回完整模式,本案**無效**。
終極解法(需停機)
- 阻擋所有寫入(應用停止、設為單人模式或離線)。
- `ALTER DATABASE CNBlogsText SET OFFLINE WITH ROLLBACK IMMEDIATE;` → `EXEC sp_detach_db 'CNBlogsText';`
- **刪除或重命名** 實體記錄檔(`.ldf`)。
- SSMS 執行 `Attach`,選擇資料檔 (`.mdf`),系統提示找不到記錄檔。
- 在對話框中**移除**該遺失的記錄檔項目 → 確定。SQL Server 會在資料檔目錄**自動建立新記錄檔**(預設 1MB,自動成長)。
- 若需將記錄檔放置其他磁碟:再次 Detach → 移動實體記錄檔 → Attach 指定新路徑。
缺點與風險
- 操作期間資料庫**完全不可用**。
- 若資料檔也有損壞,Attach 會失敗。
- 會丟失記錄檔內未備份的交易(若為完整模式且無近期記錄備份)。
適用時機
記錄檔異常膨脹、常規 Shrink 失效、可接受短暫停機、且有完整備份可恢復至一致性點。