但凡使用資料庫而沒有做好週期性備份工作者,一定會遇到交易紀錄爆炸的問題,這篇文章要教大家利用DBCC SQLPERF(LOGSPACE)指令把交易紀錄檔相關資訊找出來並排序,以利各位進行後續的防範未然之操作啦!
完整的T-SQL如下:
--不回傳影響筆數 SET NOCOUNT ON --宣告暫存表 DECLARE @交易紀錄統計表 TABLE (cName nvarchar(128), fSizeMB float, fUsedPercent float, iStatus int) --執行DBCC查詢並插入暫存表 INSERT INTO @交易紀錄統計表 EXECUTE ('DBCC SQLPERF(LOGSPACE)') -- 依據交易記錄檔的大小,由高到低的進行排序 SELECT cName, fSizeMB, fUsedPercent FROM @交易紀錄統計表 ORDER BY fUsedPercent DESC
執行結果請參考下圖,不僅宣告的暫存資料表會在指令執行完畢後自行刪除,我們希望的交易紀錄檔排序也如實的顯示了,下圖範例中排名前三的資料桶(Catalog)很顯然地已經快爆炸了!
不過就算是到達99%也不能代表有立即的危險,因為異動紀錄檔是可以自動動態擴增的,只要是磁碟空間夠多半可以一直增量下去(例如10%),只是,增加後就很難收回來了。