在 SQL Server 2000/2005 時代,DBA 常用 DUMP TRANSACTION ... WITH NO_LOG 或 BACKUP LOG ... WITH NO_LOG 搭配 DBCC SHRINKDATABASE 快速將交易記錄檔壓縮至 1 MB 左右。但自 SQL Server 2008 起,這兩個指令已被移除,直接執行會報錯:
Incorrect syntax near the keyword 'TRANSACTION'.One or more of the options (no_log) are not supported for this statement.官方文件說明:DUMP TRANSACTION 僅為相容性保留,後續版本將移除;BACKUP LOG WITH NO_LOG/TRUNCATE_ONLY 已淘汰,建議改用簡單復原模式切斷記錄鏈結。
ALTER DATABASE [YourDB] SET RECOVERY SIMPLE;
DBCC SHRINKFILE (N'YourDB_Log', 1);
ALTER DATABASE [YourDB] SET RECOVERY FULL; -- 若需完整復原模式請切回
原理:簡單復原模式下,Checkpoint 會自動截斷非作用中記錄,配合 DBCC SHRINKFILE 即可釋放空間。操作前請務必完整備份資料庫。
完整/大量記錄復原模式下,必須定期執行 BACKUP LOG,讓非作用中記錄被標記為可重複使用,避免記錄檔無限增長。建議搭配維護計畫:每日完整備份 + 每 15 分鐘記錄備份,保留 2 天備份檔。
sp_detach_db)。警告:此做法會斷裂記錄鏈結,導致無法進行時間點還原,嚴禁用於生產環境。
以下截圖示範透過 SSMS 介面卸離/附加資料庫並移除記錄檔的步驟: