如何截斷MS-SQL Transaction Log

隨著資料庫的運作,MS-SQL記錄著每一個異動的交易記錄,包括備份、更新、刪除…等。

但這些Log增長的速度決對不是你所想的這麼小,往往實體資料並沒任何增長(.MDF)但交易記錄檔(_LOG.LDF)則是以數倍的成長(如果股票也行就太好了!!)

...

隨著資料庫的運作,MS-SQL記錄著每一個異動的交易記錄,包括備份、更新、刪除…等。

但這些Log增長的速度決對不是你所想的這麼小,往往實體資料並沒任何增長(.MDF)但交易記錄檔(_LOG.LDF)則是以數倍的成長(如果股票也行就太好了!!)

下列語法是針對MS-SQL 2000及MS-SQL 2005的截斷Scritp:

--1.截斷交易記錄
BACKUP LOG [資料庫名稱]
    WITH TRUNCATE_ONLY  

--2.顯示資料庫檔案,找出交易記錄檔的邏輯檔名
EXEC sp_helpdb '資料庫名稱'

--3.壓縮交易記錄檔
USE 資料庫名稱
DBCC SHRINKFILE([資料庫名稱_log],2)

 以上語法最主要的功能是在於ShrinkFile這部份,它是直接實體的將log檔截斷,並且還回實體的磁碟空間,
若沒有使用Electronic Vaulting或是Remote Journaling,在執行完完整備份時
建議即可排程將Transaction Log做截斷,以維持資料庫不因為磁碟空間已滿而造成服務中斷的問題

當然,若有習慣做Transcation log的備份,這個動作也可以在備份作業中最後一個步驟來執行
這個不是最好的作法,但是在SQL的log以倍數成長的狀況下
若以可用性為最終考量,那麼使資料庫不因非資料庫系統產生的問題,而服務中止才是最好的作法。

 

 


Anything keeps Availability.
Anywhere keeps Integrity.
Anytime keeps Confidentiality.
keep A.I.C. = Information Security