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

SQL Server 2008 交易記錄檔壓縮完整指南

     編輯:關於SqlServer

前言

在 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 天備份檔。

方法三:離線刪除記錄檔並重新附加(風險極高,僅限測試環境)

  1. 卸離資料庫(sp_detach_db)。
  2. 刪除實體 .ldf 檔案。
  3. 重新附加時選擇「移除記錄檔」,SQL Server 會自動建立 512 KB 新記錄檔。

警告:此做法會斷裂記錄鏈結,導致無法進行時間點還原,嚴禁用於生產環境。

方法四:停止服務刪除記錄檔(同樣高風險)

  1. 停止 SQL Server 服務。
  2. 刪除 .ldf 檔案。
  3. 重新啟動服務,SQL Server 會自動建立 1 MB 新記錄檔。

圖文說明

以下截圖示範透過 SSMS 介面卸離/附加資料庫並移除記錄檔的步驟:

卸離資料庫對話框 附加資料庫對話框 選擇移除記錄檔 確認附加 完成附加

最佳實務總結

  • 生產環境:採用完整復原模式 + 定期記錄備份,配合維護計畫自動清理舊備份。
  • 測試/開發環境:可切換至簡單復原模式後收縮,或直接設定資料庫為簡單復原模式。
  • 切勿在未備份情況下刪除記錄檔或使用離線刪除法,否則將面臨資料遺失風險。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved