c# - 想在 ASP.NET MVC 中每天执行一次查询

标签 c# .net asp.net-mvc asp.net-mvc-3 .net-4.0

我希望我的 ASP.NET MVC 应用每天执行一次查询。推荐的方法是什么?

我的第一个想法是在 Global.asax 中放置一个每 24 小时关闭一次的计时器,然后从 Elapsed 处理程序调用我的查询。这样做有什么陷阱吗?有没有更好的办法?

编辑

让我为我正在尝试做的事情添加一些细节。我特别希望查询在每天午夜执行。如果错过一天(例如由于服务器维护或升级应用程序),那不会是一个大问题。

编辑2

更多细节:

  1. 查询实际上是 INSERT,而不是 SELECT。目的是为任何应在月底更新其成员(member)资格的成员(member)添加“更新”记录。
  2. 我正在使用 SQL Server Compact(这是一个非常小的数据库)。

最佳答案

一定要起源于Web层吗?谁会在那里使用 HTML?通常,周期性的 SQL 查询是在数据库中安排的。如果是 MS SQL Server - 通过 SQL Agent 作业工具。 SQL Server 甚至可以发送电子邮件。

RE: edit2: 应该马上告诉你。 SQL Server Compact 与 SQL Server 不同——一方面,它没有 SQL Agent IIRC。尽管如此,调用 Web 层还是有点矫枉过正。我会将 Windows 脚本宿主文件 (.js) 与 Windows 任务计划程序结合使用。 WSH 文件可以通过 ADO 连接到数据库并做任何他们想做的事情——插入、选择,任何事情。

要检测错过的计划运行,请引入一个额外的表,其中包含计划运行的日志。然后在后续运行中,您可以分析上次运行的日期并采取相应措施。

Edit2:所以没有管理权限。您真的应该在问题中说出所有这些细节。在这种情况下,毕竟我通过 Web 层,但调度将在我这边——我确实可以控制。让 Task Scheduler 在您这边运行并在服务器上调用 HTTP URL。要调用 URL,您可以使用类似 free CURL utility 的东西.以预定方式运行 IE 的缺点是会使窗口保持打开状态。

IIS 不是调度引擎。

Edit3 回复:评论:抱歉,我误解了您设置的性质。我自己的经历使我的判断蒙上了阴影 :) 您能否在每次登录操作期间都运行一次检查,如果自上次维护操作以来已经有一段时间了,请立即运行它?维护需要多长时间?如果它是 ~1min+,在工作线程中运行它是有意义的,这样登录用户就不会等待。

安排日常维护一般来说是个好主意,而且实现得相当频繁,但似乎您根本没有能力。

关于c# - 想在 ASP.NET MVC 中每天执行一次查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632120/

相关文章:

c# - Entity Framework code first - 不是为了创建表吗?

c# - 重叠范围 检查重叠

.net - 如何在没有客户端证书的情况下出现 : WCF with Transport Security+Server Cert Auth.?

javascript - 如何在javascript中将列表设置为剑道网格数据源?

c# - 在 ASP .NET MVC 5 中清除 session ?

javascript - 为什么在 ASP.NET MVC 中我得到 JSON 而不是 FileDownload?

c# - 如何将二维 JSON 数组发布到 Web 服务

c# - 使用 SqlBulkCopy 时如何检索服务器生成的标识值

.net - VS2010 中的 Assert.AreEqual() 异常

c# - 我想创建一个安装在远程服务器上的应用程序安装程序