在这个问题中: https ://stackoverflow.com/questions/18445825/how-to-know-status-of-currently-running-jobs
提出了这个答案:
SELECT sj.name
, sja.*
FROM msdb.dbo.sysjobactivity AS sja
INNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id
WHERE sja.start_execution_date IS NOT NULL
AND sja.stop_execution_date IS NULL
但是,对于我的其中一台服务器,这有一个可以追溯到 10 个月前的条目。查看 SQL 代理作业活动监视器显示没有正在运行的作业。查看 msdb..sysjobs 仅显示 3 个作业。谁能解释这种现象?
孤立行的 queued_date、stop_execution_date、job_history_id 和 next_scheduled_date 为 NULL。其余的值看起来是合理的。
StackOverflow 的答案有一个可能的解释:
https://stackoverflow.com/questions/13037668/what-does-it-mean-to-have-jobs-with-a-null-stop-date/13038752#13038752
去引用:
我有一个类似的问题,sysjobactivity 中的两个条目似乎“卡住”了,start_execution_date 是六周前的,没有 stop_execution_date。按照上面引用中的建议,我检查了每个卡住记录的 session_id,发现在每种情况下卡住的记录都来自以前的会话。
以下 StackOverflow 答案显示了如何仅获取当前会话的活动:
https://stackoverflow.com/a/18062236/216440
他们的代码:
谁知道!只需添加类似
这是我目前在我的环境中的答案。这对我有用,因为更大的脚本是每天运行的一部分。感觉应该有更好的答案或解释。