我使用以下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
当我EXEC msdb.dbo.sp_help_job在这些作业上运行时,我看到它们的当前执行状态是空闲的。
EXEC msdb.dbo.sp_help_job
这些工作代表什么?如果未正确杀死工作,这是行为吗?
每次启动SQLAgent时,它将在syssessions中放置一个新行,随后运行的任何作业都将在sysjobactivity中获得该session_id。对于您的停止日期为空的作业,我猜想它们不是针对“当前”会话的,这意味着当代理停止时它们仍在运行。