SQL Server 2005 長期運行導致交易記錄檔 (LDF) 膨脹至數 GB,備份檔案過大難以傳輸。本文提供最簡單的兩行 T-SQL 指令,將記錄檔壓縮至約 1 MB,附帶原理說明與生產環境風險提醒。
DUMP TRANSACTION 資料庫名稱 WITH NO_LOG;
DBCC SHRINKDATABASE('資料庫名稱', TRUNCATEONLY);
DUMP TRANSACTION MyDB WITH NO_LOG;
DBCC SHRINKDATABASE('MyDB', TRUNCATEONLY);
| 指令 | 作用 |
|---|---|
| DUMP TRANSACTION ... WITH NO_LOG | 截斷非作用中虛擬記錄檔 (VLF),標記為可重用,**不寫入備份檔** (等同 2000 的 TRUNCATE_ONLY) |
| DBCC SHRINKDATABASE(..., TRUNCATEONLY) | 釋放資料/記錄檔尾端未使用空間給作業系統,**不移動資料頁**,速度極快 |
WITH NO_LOG / TRUNCATE_ONLY **破壞交易記錄鏈**,導致無法進行時間點還原,之後的完整備份才能恢復還原鏈。-- 完整備份 (每日/每週)
BACKUP DATABASE MyDB TO DISK = 'D:\Backup\MyDB_Full.bak' WITH INIT, COMPRESSION;
-- 交易記錄備份 (每 15-60 分鐘)
BACKUP LOG MyDB TO DISK = 'D:\Backup\MyDB_Log_20240115_1430.trn' WITH COMPRESSION;
WITH COMPRESSION) 減少儲存/傳輸成本。log_reuse_wait_desc = REPLICATION/AVAILABILITY_REPLICA)。查詢等待原因:SELECT name, log_reuse_wait_desc FROM sys.databases;
緊急時刻兩行指令救急,平時靠定期記錄備份穩健控制,這才是專業 DBA 的記錄檔管理之道。