我原本寫過一個監控系統,主要是用來郵件提示job失敗的信息,但是最近發生個異常,某job運行死鎖整整運行6天將重要的系統弄癱瘓了
於是想寫個sql來檢測當前運行的job那些已運行一小時以上
原本sysjobhistory中有個run_status 據說值為4的時候就是正在運行,可是,實際操作卻完全沒用,請各位幫幫指正,指點迷津,感激不盡~~~
------解决方案--------------------
--1
USE msdb ;
GO
EXEC dbo.sp_help_jobactivity ;
GO
--2
select *
from msdb.dbo.sysjobactivity
where datediff(hh,start_execution_date ,stop_execution_date) > 1
开始,结束时间可以查看。
------解决方案--------------------
select *
from jobhistory
where
run_duration/10000 >1
------解决方案--------------------
正在执行的,LZ可以查看其中的开始时间与当前getdate()之间的差值了。