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

SQL Server 2008 交易記錄檔暴增?三步驟縮小至幾 MB 完整教學

     編輯:SQL Server 2008

核心原則

記錄檔縮小 必須在簡單復原模式下執行,完成後再切回完整模式以保護資料安全。

標準縮小腳本(可直接套用)

-- 1. 切換至簡單復原模式
USE [master];
GO
ALTER DATABASE [YourDB] SET RECOVERY SIMPLE WITH NO_WAIT;
GO
ALTER DATABASE [YourDB] SET RECOVERY SIMPLE;
GO

-- 2. 縮小記錄檔(目標 11 MB,視實際需求調整)
USE [YourDB];
GO
DBCC SHRINKFILE (N'YourDB_Log', 11, TRUNCATEONLY);
GO

-- 3. 切回完整復原模式並立即進行完整備份
USE [master];
GO
ALTER DATABASE [YourDB] SET RECOVERY FULL WITH NO_WAIT;
GO
ALTER DATABASE [YourDB] SET RECOVERY FULL;
GO
-- 重要:立即執行完整備份啟動新的記錄鏈
BACKUP DATABASE [YourDB] TO DISK = '備份路徑\YourDB_Full.bak';
GO

關鍵細節

  • 邏輯檔名確認: 執行 SELECT name FROM sys.database_files WHERE type_desc = 'LOG'; 取得正確邏輯名稱,勿假設為 DBName_Log。
  • TRUNCATEONLY: 僅釋放檔案尾端未使用空間,不移動資料頁,速度最快、最安全。
  • 目標大小: 設定略大於實際使用量(如 11 MB),避免過度縮小導致後續頻繁自動成長碎片化。
  • 完整備份不可少: 切回完整模式後必須立即完整備份,否則記錄鏈中斷,後續記錄備份會失敗。

SQL Server 2005 / 2000 差異備註

  • 2005: 使用 BACKUP LOG DBName WITH NO_LOG / TRUNCATE_ONLY(已棄用)配合 DBCC SHRINKFILE。
  • 2000: DUMP TRANSACTION ... WITH NO_LOG + DBCC SHRINKDATABASE。

預防記錄檔失控長效機制

  1. 設定 記錄檔自動成長上限(屬性 → 檔案 → 限制檔案成長)。
  2. 排程 定期記錄備份(如每 15-60 分鐘),截斷非作用中 VLF。
  3. 啟用 AUTO_SHRINK 不建議,會造成索引碎片與效能抖動。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved