共用计划调度

起因:死锁检查作业(更应该说是阻塞检查作业)将作业A kill掉,实际阻塞情况并不严重。刚好作业A运行的时间点,死锁检查作业也会运行,于是想修改作业A的计划调度以避开与死锁检查作业同时运行。作业A的计划调度修改后,发现作业B的计划调度也跟着改变了(根据随笔获取指定时间区间作业运行情况查看得出)。
查看作业A、B详细信息,发现两个作业的schedule_id相同。为什么会出现这种情况,可能是利用作业A生成的脚本创建作业B时,仅仅修改了作业名称、作业步骤,而作业调度还是使用作业A的,因此两个作业共用了一个计划调度。
影响:修改任一作业的计划调度会影响另一作业的计划调度,对执行时间有特别要求的作业会有影响。
解决方案:语句检查是否存在共用计划调度的作业

 1 --语句检查是否存在共用计划调度的作业
 2 select top 100 a.name,b.schedule_id,c.schedule_uid,c.name from msdb.dbo.sysjobs a
 3 inner join msdb.dbo.sysjobschedules b
 4 on a.job_id=b.job_id
 5 inner join msdb.dbo.sysschedules c
 6 on b.schedule_id=c.schedule_id
 7 inner join (
 8 select schedule_id from msdb.dbo.sysjobschedules 
 9 group by schedule_id
10 having COUNT(*)>1) d
11 on b.schedule_id=d.schedule_id
12 order by schedule_id

对于存在共用计划调度的作业,可删除调度再创建新调度。

原文地址:https://www.cnblogs.com/Uest/p/4304400.html