sql – “重复任务”的设计选项

前端之家收集整理的这篇文章主要介绍了sql – “重复任务”的设计选项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个处理人员任务的小应用程序.非常简单,但就表设计而言,我所坚持的区域是一个重复任务的情况,可以是一次性,每天,每周或每月.如果是每周一次,那就是每周特定的一天.每月是特定的一天.

我有一个任务表和一个recurring_type_id,并且将在代码中处理重复的任务,但这是理想的方法吗?另一种方法是在创建任务时插入所有任务 – 每个事件时间.但这似乎也不正确.

任何人都可以就设计提出建议,以及如何以可维护和有效的方式处理这个问题?

我正在使用sql Server 2008 R2

解决方法

我会创建一个任务表来插入我的任务.
taskTable
|taskID  |Freq   |runAt       |
-------------------------------
|1       |daily  |1           |
|2       |daily  |0           |
|3       |weekly |5           |
|4       |weekly |1           |
|5       |monthly|15          |
|6       |monthly|1           |
|7       |once   |2013-7-4    |

runAt for dailies从未被考虑过,因此输入的值无关紧要.

每周项目的runAt是任务运行的星期几.

runAt for mothly是任务运行的月份的一天(月末任务我通常在第一天运行,因为这样可以省去处理月份哪一天结束的麻烦,尽管你可以用它来解决这个问题

lastDayOfMonth = datePart(d,dateadd(s,-1,dateadd(mm,datediff(m,getdate())+1,0)))

runAt for once是任务运行的实际日期.

然后我创建一个每天运行的任务,看看需要运行什么.

select  taskID
from    taskTable
where   (freq = 'once' and runAt = convert(varchar(10),getDate(),21))
  or    freq = 'daily'
  or    (freq = 'weekly' and runAt = datePart(dw,getDate()))
  or    (freq = 'monthly' and runAt = datePart(d,getDate())

查询为我提供了我需要运行的任何任务的所有taskID.

不确定这是否是你想要的,但希望你能找到有用的东西.

原文链接:https://www.f2er.com/mssql/83619.html

猜你在找的MsSQL相关文章