为了账号安全,请及时绑定邮箱和手机立即绑定

使用T-SQL找出执行时间过长的作业

标签:
SQL Server

    有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下:

 

SELECT sj.name

   

   , sja.start_execution_date,DATEDIFF (SECOND ,sja.start_execution_date,GETDATE() ) AS ExecutedMin,ja.AvgRuntimeOnSucceed

   

FROM msdb.dbo.sysjobactivity AS sja

   

INNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id INNER

   

join

   

(

   

    SELECT job_id,

   

    AVG

   

    ((run_duration/10000 * 3600) + ((run_duration%10000)/100*60) + (run_duration%10000)%100)

   

    +

   

    NULLIF(0,STDEV

   

    ((run_duration/10000 * 3600) + ((run_duration%10000)/100*60) + (run_duration%10000)%100)) AS 'AvgRuntimeOnSucceed'

   

     FROM msdb.dbo.sysjobhistory

   

    WHERE step_id = 0 AND run_status = 1

   

    GROUP BY job_id) ja

   

    ON sj.job_id = ja.job_id

   

WHERE sja.start_execution_date IS NOT NULL --作业有开始

   

   AND sja.stop_execution_date IS NULL --作业没结束

   

   AND sja.start_execution_date>DATEADD(DAY,-2,GETDATE()) --作业2天内开始

   

  -- AND DATEDIFF (SECOND ,sja.start_execution_date,GETDATE() )>ja.AvgRuntimeOnSucceed *1.5 --作业执行时间比历史平均时间超了50%"

 

    如果作业经常出现问题,可以使用该脚本监控尽早发现问题。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
64
获赞与收藏
367

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消