T-SQL任务生成器脚本

时间:2014-10-09 18:54:00

标签: sql sql-server sql-server-2008 tsql task

我需要创建一个 T-SQL (我使用 SQL Server 2008 Express )脚本(过程/功能) “任务”表中的条目,仅生成计划在接下来的5小时内完成的任务。

在“任务”表格中,我应该拥有作业的任务,例如属性:

  • 出现:一次或递归

  • 频率:每x 天,周,月

  • 取决于频率

  • 每日:每x 小时,分钟
  • 每周 - 一周中的几天任务发生时
  • 每月 - 第一,第二,最后 - 天,工作日,周末 -
    星期几 OR 月的第1,第2,第3 ...... 31个

当我运行脚本时,如果任务每x 分钟发生,我应该只获得在接下来的5小时或更短时间内发生的任务。 所以这个脚本实际应该做的是使用SQL Server作业中的所有选项来完成任务。

示例1 :我在14:00到15:00之间创建了一个“检查电子邮件”任务每天。当我在09:00运行脚本时,我会得到任务:“检查电子邮件”时间:剩下5个小时,直到任务,因为它每天都会发生,我应该能够每天滚动脚本时得到这个结果,只有当5小时或更短的范围。

示例2 :在第1周(非周末),下午01:00发生每月的任务“发送小时数报告”。在每月的第一个星期的上午08:00运行脚本我应该得到任务:“发送小时报告”时间:5小时直到任务

我知道这是一个非常大的请求,但希望有人会觉得很容易对我来说似乎很难。

1 个答案:

答案 0 :(得分:0)

您还应该存储上次执行每个作业的日期/时间(至少对于每x小时/分钟配置的作业)。我们的想法是计算每个作业的下一个执行日期/时间,如果距离不到5个小时,则返回它。如果为每x小时/分钟配置作业,请使用DATEADD并检查结果是否在配置的时间范围内。如果作业是每天(在指定的时间)配置,只需检查指定的时间是否少于5小时(但仍在将来)。我已经做了类似的功能,检查所有情况都不是一件容易的事(我花了几天时间编码)。

相关问题