SQL Server Keep Track on Log Space

最近終於有機會 去做一些Database Mangement 的任務
如果有留意之前的Blog都會發現公司很多時候都會有Transaction Log Full 這個問題
所以便想寫一些schedulemoniter transaction log什麼時候會用了多小
還有當有log shipping有問題是 也可以predict得到
[因為Transaction logused Percentage 應該都會留在得高位置]
首先我們要建立一個 Temp table去把 之前介紹 取得Log Space 資訊輪出的資料暫存在這個Table上

TSQL – How to Get the Transaction Log Size -MSSQL

DECLARE @LogSpace TABLE(
DatabaseName VARCHAR(255), 
LogSizeMB DECIMAL(18,2), 
SpaceUsedPercentage DECIMAL(18,2), 
LogStatus VARCHAR(1)

)

之後把Export出來的Log 資訊 暫存在這個Table上

INSERT INTO @LogSpace
EXEC('DBCC SQLPERF(logspace)');

由於這是一個Demo所以便再Create 一個新的temp table 來儲存這個Log資料
但是在這個Table上我加了 DOE (Date Of Entry) 來方便將來分析這些Log什麼時候會開始滿

DECLARE @LogSpaceLog TABLE(
DatabaseName VARCHAR(255), 
LogSizeMB DECIMAL(18,2), 
SpaceUsedPercentage DECIMAL(18,2), 
LogStatus VARCHAR(1),
DOE DATETIME DEFAULT GETDATE()

)

加資料加進這個Table上

INSERT INTO @LogSpaceLog
(DatabaseName, LogSizeMB, SpaceUsedPercentage, LogStatus)
SELECT DatabaseName, LogSizeMB, SpaceUsedPercentage, LogStatus
FROM @LogSpace

Preview

SELECT *
FROM @LogSpaceLog

hope you find it useful

Leave a Reply