Microsoft SQL Server代理作业:获取触发作业的计划

s8vozzvw  于 2023-02-15  发布在  SQL Server
关注(0)|答案(2)|浏览(145)

我的系统上有SQL Server代理作业,该作业将数据复制到表中以供以后评估。该作业每周每周五和每月最后一天按两种类型的计划运行。目标数据记录还应包含一列,指示最初触发该作业的计划。但到目前为止,我还没有找到将此数据作为参数接收的方法。我使用的是Microsoft SQL Server 2017。
我做了一个网络搜索,但可能搜索了错误的关键字。我也想过将当前时间与每个计划的预期运行时间进行比较,但这对我来说似乎不是一个容错选项。
我喜欢用“周末”、“月末”之类的值来填充“时间表”列

kmpatx3s

kmpatx3s1#

sys表是您的好朋友。Documentation

  • sysjobs包含您的作业信息。
  • sysjobschedules将作业链接到其调度。
  • sysschedules包含您的计划信息。
SELECT j.*
     , s.*
  FROM sysjobs j
  JOIN sysjobschedules js ON j.id = js.job_id
  JOIN sysschedules     s ON js.schedule_id = s.schedule_id
 WHERE j.name = 'your job name here'
myss37ts

myss37ts2#

经过长时间的搜索和分析,我终于找到了一个解决方案,至少适合我的需要:未记录且不受支持的存储过程提供了触发作业ind Column Request Source ID的调度:

EXEC master.dbo.xp_sqlagent_enum_jobs 1, garbage

另请参见:https://am2.co/2016/02/xp_sqlagent_enum_jobs_alt/

相关问题