如何查找正在运行或已运行的SQL代理作业的spid?

时间:2017-02-10 05:13:24

标签: sql sql-server tsql sql-job

我在尝试查找仍在某个时间范围内运行或已经运行的作业的SPID时遇到困难。有谁知道我能在哪里找到它?我知道我可以查看master.sys.sysprocesses表来查找SQL Server已知的spid。

这是我多次尝试之一:

SELECT        TOP (100) PERCENT sj.name, sja.run_requested_date, CONVERT(VARCHAR(12), sja.stop_execution_date - sja.start_execution_date, 114) AS Duration, sj.job_id, sj.enabled
FROM            msdb.dbo.sysjobactivity AS sja INNER JOIN
                         msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id
WHERE        (sja.run_requested_date IS NOT NULL) AND (CONVERT(VARCHAR(12), sja.stop_execution_date - sja.start_execution_date, 114) > CONVERT(VARCHAR(12), '00:00:02:000', 114))
ORDER BY sja.run_requested_date DESC

1 个答案:

答案 0 :(得分:0)

我使用Adam Machanic的sp_WhoIsActive获取此信息 sp_WhoIsActive
对于历史数据,我每分钟运行一次并将输出捕获到表中。 布伦特·奥扎尔有一篇关于如何做到这一点的文章Here