首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2005

SQL Server 2005 記錄檔收縮三步驟:簡單模式暫切、收縮、恢復完整模式

     編輯:SQL Server 2005

適用場景

交易記錄檔 (.ldf) 異常膨脹,佔用大量磁碟空間,需快速釋放空間。注意:收縮會打破記錄鏈,影響時間點還原能力,生產環境請謹慎操作並事先完整備份。

操作步驟 (SSMS 圖形化)

  1. 切換復原模式:右鍵資料庫 → 【屬性】 → 【選項】 → 「復原模式」從 完整 (Full) 改為 簡單 (Simple),確定。
  2. 收縮記錄檔:右鍵資料庫 → 【工作】 → 【收縮】 → 【檔案】 → 「檔案類型」選 記錄 (Log) → 「收縮動作」選 釋放未使用空間 或輸入目標大小 (如 0 MB) → 確定。
  3. 恢復復原模式:重複步驟 1,將復原模式改回 完整 (Full),並立即執行一次完整備份以重新啟動記錄鏈。

T-SQL 等效腳本

USE master;
GO
-- 1. 切簡單模式
ALTER DATABASE [YourDB] SET RECOVERY SIMPLE;
GO
-- 2. 收縮記錄檔 (邏輯檔名通常為 YourDB_log)
DBCC SHRINKFILE (N'YourDB_log', 0);  -- 0 表示釋放所有可釋放空間
GO
-- 3. 改回完整模式
ALTER DATABASE [YourDB] SET RECOVERY FULL;
GO
-- 4. 立即完整備份,啟動新記錄鏈
BACKUP DATABASE [YourDB] TO DISK = 'E:\Backup\YourDB_Full.bak' WITH INIT;
GO

關鍵提醒

  • 簡單模式下 記錄檔會自動截斷(Checkpoint 時),因此能收縮;完整模式下必須先備份記錄 (BACKUP LOG) 才能截斷。
  • 收縮後記錄檔會再次增長,若頻繁收縮會造成檔案碎片、效能下降。建議:
    ① 設定記錄檔合理初始大小與自動成長增量 (如 512MB/10%)。
    ② 定期 BACKUP LOG (如每 15-60 分鐘) 控制記錄大小。
    ③ 監控 DBCC SQLPERF(LOGSPACE) 趨勢。
  • 若記錄檔因長時間事務、異步鏡像/複寫、可用性群組同步延遲而無法截斷,需先解決根因再收縮。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved