在特定日期和时间触发事件

时间:2012-09-11 09:47:34

标签: asp.net sql-server

我有一个现有的数据结构,我被迫使用,按周和小时保存预定的事件。

我正在使用SQL Server 2008和ASP.NET控制台应用程序(暂时)来触发。

触发时间在数据库中存储为布尔值。

示例:

SendMonday            bit   Unchecked
SendTuesday           bit   Unchecked
SendWednesday         bit   Unchecked
...
=====================================    
Send0000              bit   Unchecked
Send0100              bit   Unchecked
Send0200              bit   Unchecked
Send0300              bit   Unchecked
...

从理论和编程角度来看,为了在特定时间触发事件,最佳方法是什么?

我的方法涉及在数据库中存储“LastProcessed”日期并进行大量手动工作,但想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:2)

我会使用SQL Server Agent每小时运行一个计划任务来检查需要调用的事件。

答案 1 :(得分:0)

听起来像是后端存储过程的预定任务的作业。计划作业应该执行存储过程,sproc会查看具有调用时间的表,并决定是否以及需要执行什么。如果需要,可以将外部程序连接到存储过程。

或者,如果您不想依赖sproc和sql server代理,则可以在控制台应用程序中编写所有逻辑,并从Windows任务计划程序执行您的应用程序。因此,您的应用程序将从调度表中获取数据,决定是否以及如何操作并按要求继续。

我的偏好是采用第二种方法 - 更容易维护,但这实际上取决于您的要求和环境。