拥有零停止日期的工作意味着什么?

ste*_*bot 6 sql sql-server

我曾使用以下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这些作业时,我看到它们当前的执行状态是空闲的.

这些工作代表什么?当工作没有被正确杀死时,这是行为吗?

Ben*_*hul 5

每次SQL代理启动时,它都会在syssessions中添加一个新行,随后运行的所有作业将在sysjobactivity中获取该session_id.对于具有空停止日期的作业,我的猜测是它们不适用于"当前"会话,这意味着它们在代理停止时仍在运行.

  • 我同意关于**syssessions**的评论 - 有必要确定哪些作业目前正在运行**sysjobactivity**.但是,当前会话中的NULL停止日期表示作业当前正在运行. (3认同)
  • 在最初的问题中,海报说sp_help_job将作业显示为空闲.但是你是对的,这是另一种结束日期为NULL的情况. (2认同)