SQL Server 資料庫記錄檔若不定期維護會無限增長,佔滿磁碟導致服務停擺。本文提供兩種壓縮清除方法:GUI 操作法(切換復原模式 + 收縮資料庫)與 T-SQL 腳本法(模擬交易填滿記錄再截斷),並附完整可執行腳本。
腳本邏輯:建立暫存資料表,迴圈寫入/刪除大量資料填滿記錄檔,配合 BACKUP LOG ... WITH TRUNCATE_ONLY 截斷,再執行 DBCC SHRINKFILE 釋放空間。完整腳本如下:
SET NOCOUNT ON
DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT
USE YourDB
SELECT @LogicalFileName = 'YourDB_log', @MaxMinutes = 10, @NewSize = 1
-- 其餘變數宣告與迴圈邏輯請見內文完整腳本
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- 迴圈填滿記錄並重複截斷直到達到目標大小或逾時
DROP TABLE DummyTrans
SET NOCOUNT OFF
注意:TRUNCATE_ONLY 選項在較新版本已移除,建議改用簡單復原模式配合 DBCC SHRINKFILE。