Code block

Google Code Prettify + AD Sense

2018年7月9日 星期一

SQL Server 刪除「維護計畫」與「SQL Agent」的job Log

SQL Server的Agent如果有排定例行作業,再每次執行Job之後,都會寫一筆紀錄,時間一久之後,要查詢執行的Log時,就會發現因為Log太多導致載入時間變長
SQL Agent有個清除Log的功能,但是預設不會啟動,而且是手動、單次執行,為了提升生活品質,排定一個定期作業讓SQL自己維護,生活會多一些色彩~

我們sp_purge_jobhistory這個指令,來清除SQL Agent job的Log,指令如下:
DECLARE @Target_date datetime = CONVERT(date,DATEADD(DAY,-365,GETDATE()))
-- 清除所有job超過一年紀錄
exec msdb.dbo.sp_purge_jobhistory @job_name=NULL,@oldest_date=@Target_date
或者指定job名稱與日期:
exec msdb.dbo.sp_purge_jobhistory @job_name='Job名稱',@oldest_date='2016-03-01'
不過SQL有個用於備份的「維護計畫」,而這個作業也是與SQL Agent Log一樣的會成長,要清除它需要改用sp_maintplan_delete_log指令:
 DECLARE @Target_date datetime = CONVERT(date,DATEADD(DAY,-365,GETDATE()))
-- 清除超過一年的維護計畫紀錄
EXEC msdb.dbo.sp_maintplan_delete_log @plan_id=NULL,@subplan_id=NULL,@oldest_time=@Target_date
附註:日期計算請用DAY為單位,若用YEAR會碰到閏年2/29不執行的問題

沒有留言:

張貼留言