ASP.NET长时间运行SQL Server过程 - 如何处理?消息?

时间:2008-11-18 00:11:26

标签: .net sql-server

我有一个Web应用程序需要在满足某些条件时启动长时间运行的SQL Server过程(以重建表)。建议的程序是什么?

我在想,当符合条件时,会将一条记录插入到数据库中,并且计划的SQL服务器作业将以指定的时间间隔检查该表并触发该过程。虽然看起来有点像个hackish。

处理此问题的首选方法是什么?作为一个相关问题,处理未来事件的首选方式是什么(即在用户注册后10天发送电子邮件?)

这种情况是什么样的消息传递?

3 个答案:

答案 0 :(得分:1)

您的方法绝对可行,是我见过它的一种方式。例如,在具有千兆字节库存数据的复杂网络中,公司基本上实施了您所描述的内容,以允许全天部分更新库存数据。

我见过的其他一些方法涉及一个位于应用服务器上的调度服务,它会调用一段代码来处理事件。 (例如你问题的第二部分)。在应用程序层中使用此功能可以扩展事件的处理,并且可以将数据库用作后备存储,以确保不会丢失任何事件。

您的用户是否需要查看操作的结果?您也可以启动异步调用来处理结果,然后挂起用户并提供状态信息。如果您不想挂在用户身上,那么您将需要一个存储结果的状态表。

我要看的最后一件事是服务经纪人。我还没有使用它,我不确定它是否合适,但我会把它作为一种选择。我们已经开始将其视为开始长时间运行的工作流程的一种方式,但是在我们到达任何地方之前我离开了公司。

答案 1 :(得分:0)

如果在调用执行存储过程后不必担心结果,最好以异步方式运行它。

答案 2 :(得分:0)

我想通知进行了需要重建的更改的用户(a)将进行重建,以及(b)重建已完成。我想通过用户界面中的消息和电子邮件来做到这一点。我宁愿申请(不是数据库处理电子邮件)。

我希望能够在事务完成后很长时间内在UI中通知他们(如果他们注销然后在当天晚些时候重新登录)。

当你说App服务器上的调度服务时你指的是像Windows服务这样的东西,它只负责处理这类事情吗?