BACKUP LOG MyDB WITH NO_LOG; -- SQL 2000/2005
-- SQL 2008+ 已移除 NO_LOG,改用暫時切換復原模式:
ALTER DATABASE MyDB SET RECOVERY SIMPLE;
CHECKPOINT; -- 強制截斷
-- 或
DBCC SHRINKFILE (MyDB_Log, 100); -- 目標大小 MB,需先截斷才能收縮
EXEC sp_detach_db 'MyDB';
-- 檔案總管刪除 MyDB_log.ldf
EXEC sp_attach_single_file_db @dbname = 'MyDB',
@physname = 'D:\Data\MyDB.mdf'; -- 自動建立 500KB 新記錄檔
高風險:未提交交易永久丟失、資料庫可能進入 SUSPECT、啟動失敗。生產嚴禁。
EXEC sp_dboption 'MyDB', 'autoshrink', 'TRUE';
-- 或 SSMS:資料庫屬性 → 選項 → 自動收縮 = True
**副作用**:背景執行緒定期檢查、收縮造成索引碎片、效能抖動。**建議關閉**,改用定期維護計劃手動控制。
ALTER DATABASE MyDB MODIFY FILE (NAME = MyDB_Log, MAXSIZE = 50GB); -- 依磁碟容量設定上限
-- SSMS:資料庫屬性 → 檔案 → 記錄檔 → 限制檔案增長 (MB)
防止失控佔滿磁碟導致資料庫掛起。達上限後寫入失敗,需手動清理/擴充後恢復。
ALTER DATABASE MyDB SET RECOVERY SIMPLE;
-- 或 SSMS:屬性 → 選項 → 故障還原模型 = 簡單
Checkpoint 自動截斷,記錄檔維持穩定。**代價**:無法時間點還原,僅能還原至最近完整/差異備份。
本質同上:切簡單模式觸發 Checkpoint 截斷 → 收縮 → 切回。操作簡單但原理相同,生產環境請依標準維護計劃執行。