天天看點

ms sql server 2005資料庫日志檔案過大,需要清除或者清空

資料庫:ms sql server 2005

任務:ms sql server 2005資料庫日志檔案過大,需要清除。

方法:

backup log [你的資料庫名稱] WITH NO_LOG

backup log [你的資料庫名稱] WITH TRUNCATE_ONLY

DBCC SHRINKDATABASE([你的資料庫名稱])

說明:

backup log 指定僅備份事務日志。該日志是從上一次成功執行的 LOG 備份到目前日志的末尾。備份日志之後,可能會截斷事務複制或活動事務不再需要的空間。

<dl></dl>

<dt>NO_LOG | TRUNCATE_ONLY</dt>

<dd></dd>

通過放棄活動日志以外的所有日志,無需備份複制日志即可删除不活動的日志部分,并截斷日志。該選項會釋放空間。因為并不儲存日志備份,是以沒有必要指定備份裝置。NO_LOG 和 TRUNCATE_ONLY 是同義的。

這裡有個問題,什麼是活動日志,微軟的解釋是:

日志檔案中從必須存在以確定資料庫範圍内成功復原的第一條日志記錄到最後寫入的日志記錄之間的部分稱為日志的活動部分,即“活動日志”。這是進行資料庫完整恢複所需的日志部分。永遠不能截斷活動日志的任何部分。

DBCC SHRINKDATABASE 收縮特定資料庫的所有資料和日志檔案,這個是最簡單的方法了,也可以使用。

不過有個問題是:

在一些對資料安全性要求不高,或者備份頻率很高的情況下,使用直接截斷日志的方法不如使用 簡單恢複模式。微軟說:在簡單恢複模式下,在每個資料備份後事務日志将自動截斷,也就是說,不活動的日志将被删除。因為經常會發生日志截斷,是以沒有事務日志備份。這簡化了備份和還原。但是,沒有事務日志備份,便不可能恢複到失敗的時間點。

也就是說:如果你不會使用日志來恢複資料(我自己不會用,我使用redgate 定時高頻率備份),那麼簡單模式就是最佳的方案。