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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用T-SQL找出执行时间过长的作业相关的知识,希望对你有一定的参考价值。

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

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

 

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%"

 

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

以上是关于使用T-SQL找出执行时间过长的作业的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL Server 代理作业失败“用户无权执行此操作”

四巨头第十一周作业 翻译

如何使用相同的SqlConnection对象在多个SqlCommands中声明和使用T-SQL变量来执行多个插入?

第二周作业

在 SQL Server 的维护计划中添加 T-SQL

CO88运行时间过长解决