每月定期调用函数

时间:2011-12-01 14:25:12

标签: c# sql-server-2008 date

对于在C#中使用数据库的应用程序,我需要每个月调用一次函数(在指定的日期)。有必要检查应用程序的每次启动,如果在数据库中注册的已定义的日期已经是本月,如果是,则不再调用该方法。 什么是最好的解决方法?在数据库中也保存月份和年份,并检查实际日期>比数据库中的值?

有更简单的方法吗?

编辑1:

如果我尝试使用Windows任务计划程序执行此操作,我如何与C#联系? 我的方法是一个Sql-Insert-Statement,必须每个月在同一天完成一次。

5 个答案:

答案 0 :(得分:3)

使用SQL Server Agent并设置定期job

如果这不是一个选项,您可以使用windows task scheduler执行sqlcmd脚本。

答案 1 :(得分:1)

对于特定的内容,为什么不只是创建一个计划任务来调用您的应用程序。

答案 2 :(得分:1)

计划任务,Windows服务或sql server代理会更好(如果你有服务器可用)。

如果失败 - 并且假设该功能 在特定日期运行,那么上面的解决方案似乎没问题。

如果功能必须在1日运行,你可以依靠你的应用程序在'那时候?

编辑所以....你有某种c#应用程序,文件夹中有mdf。你有一个必须在本月1日运行的插入。

我会在拥有该应用的计算机上create a scheduled task。该任务将调用另一个(微小的)C#程序(.exe)命令,该命令具有到db *的连接字符串。这个应用程序每月调用一次并执行插入。

* Driver={SQL Native Client};Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes

答案 3 :(得分:0)

您可以按照建议将数据保存在数据库中,只需编写可以通过Windows Scheduler调用的内容。我相信其他人会提供其他方法。

答案 4 :(得分:0)

我遇到了和你一样的问题。我的解决方案如下: 将此操作放在Main()中以确保每次调用此方法,并判断DateTime.Now是一个月的第一天,如果是,则对您的业务做一些事情。

我的英语很差。