【发布时间】:2014-10-09 18:53:59
【问题描述】:
我需要创建一个 T-SQL(我正在使用 SQL Server 2008 Express)脚本(procedure/function) “Tasks”表中的条目并仅生成计划在接下来 5 小时内发生的任务。
在“任务”表中,我应该有具有 job 属性的任务:
-
发生次数:一次或递归
-
频率:每 x 天、周、月
-
取决于频率:
-
每天:每 x 小时、分钟
-
每周 -一周中的哪几天应该发生的任务
-
每月 - 第一、第二、最后 - 日、工作日、周末 -
星期几或月的第 1、2、3..31 天。
当我运行脚本时,如果任务每 x 分钟发生一次,我应该只获得将在接下来的 5 小时或更短时间内发生的任务。 所以这个脚本实际上应该做的是使用 SQL Server 作业中的所有选项来完成任务。
示例 1:我创建了一个每天在 14:00 到 15:00 之间发生的任务“检查电子邮件”。当我在 09:00 运行脚本时,我会得到任务:“检查电子邮件”时间:距离任务还剩 5 小时,因为它每天都会发生,我应该能够在每天滚动脚本时得到这个结果,只有当5 小时或更短的范围。
示例 2:每月在第一个工作日(不是周末)下午 01:00 发生的“发送工时报告”任务。在每月的第一周上午 08:00 运行脚本我应该得到任务:“发送小时报告”时间:距离任务 5 小时
我知道这是一个很大的要求,但希望有人会觉得这对我来说似乎很难。
【问题讨论】:
-
你的问题一点都不清楚。你问的是sql作业吗?或者这是您正在编写的某种东西,它将实现与许多其他可用东西相同类型的调度?如果是后者,我会问你为什么不能使用预制调度程序。正如您所发现的那样,它非常复杂。
-
不询问 sql 作业,它是作业的替代方案。预先制定的时间表是个好主意。我需要脚本来查看计划在接下来 5 小时或更短的时间内完成的任务。
标签: sql sql-server sql-server-2008 tsql task