我曾使用以下SQL列出所有没有停止日期的作业.我以为我可以用它来找到所有活跃的工作.我注意到的是,我在这个表中有一些空的stop_execution_date.在此表中多次重复一些相同的作业(相同的job_id).
select job.*, activity.*
from msdb.dbo.sysjobs_view job
inner join msdb.dbo.sysjobactivity activity
on (job.job_id = activity.job_id)
where run_Requested_date is not null and stop_execution_date is null
Run Code Online (Sandbox Code Playgroud)
当我运行EXEC msdb.dbo.sp_help_job这些作业时,我看到它们当前的执行状态是空闲的.
这些工作代表什么?当工作没有被正确杀死时,这是行为吗?
每次SQL代理启动时,它都会在syssessions中添加一个新行,随后运行的所有作业将在sysjobactivity中获取该session_id.对于具有空停止日期的作业,我的猜测是它们不适用于"当前"会话,这意味着它们在代理停止时仍在运行.