查看job和存储过程的运行时长

做两个系统之前的数据同步时,常常会把源数据(txt. csv. excel. RFC-read table)先存到一个中间数据库的临时表,然后用SSIS JOB去调用一些存储过程,同步数据到目标系统的目标表。

最近有一些存储过程同样在JOB中被调用,执行很慢,导致其它系统(如CRM需要查询)死锁,这里提供两组SQL。

1.查询当前数据库中存储过程的执行情况,包括执行次数,执行时长,存储过程的脚本等。

SELECT s2.dbid,     (SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 ,       ( (CASE WHEN statement_end_offset = -1          THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)          ELSE statement_end_offset END)  - statement_start_offset) / 2+1))  AS sql_statement,     execution_count,     plan_generation_num,     last_execution_time,       total_worker_time,     last_worker_time,     min_worker_time,     max_worker_time,    total_physical_reads,     last_physical_reads,     min_physical_reads,      max_physical_reads,      total_logical_writes,     last_logical_writes,     min_logical_writes,     max_logical_writes FROM sys.dm_exec_query_stats AS s1 CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2  WHERE s2.objectid is null ORDER BY s1.total_worker_time desc

2.看到慢的存储过程,可以找到相关的JOB,再查询这个JOB最近每次执行所需的时间;

SELECT  j.name AS 'JobName' ,          s.step_id AS 'Step' ,          s.step_name AS 'StepName' ,          msdb.dbo.agent_datetime(run_date, run_time) AS 'RunDateTime' ,          ( ( run_duration / 10000 * 3600 + ( run_duration / 100 ) % 100 * 60              + run_duration % 100 + 31 ) / 60 ) AS 'RunDurationMinutes'  FROM    msdb.dbo.sysjobs j          INNER JOIN msdb.dbo.sysjobsteps s ON j.job_id = s.job_id          INNER JOIN msdb.dbo.sysjobhistory h ON s.job_id = h.job_id 
                                            AND s.step_id = h.step_id 
                                            AND h.step_id <> 0 
WHERE   j.enabled = 1   AND j.name='DailyBillingReport_DB(crm)_Mail(xlsx)' 
ORDER BY           RunDurationMinutes DESC

转载于:https://www.cnblogs.com/GraceYHLi/p/5439157.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值