代码之家  ›  专栏  ›  技术社区  ›  Kyle West

ASP。NET长时间运行的SQL Server过程-如何处理?信息?

  •  1
  • Kyle West  · 技术社区  · 16 年前

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

    我在想,当满足条件时,一条记录将被插入数据库,一个计划的SQL server作业将以指定的间隔检查该表并启动该过程。不过,这似乎有点老套。

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

    这种场景就是消息传递的全部内容吗?

    3 回复  |  直到 16 年前
        1
  •  1
  •   JoshBerke    16 年前

    你的方法绝对可行,这是我看到的一种方法。例如,在一个拥有千兆字节库存数据的复杂网络中,该公司基本上实现了您所描述的功能,允许全天部分更新库存数据。

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

    您的用户需要查看操作的结果吗?您还可以启动异步调用来处理结果,然后挂起用户并提供状态信息。如果你不想留住用户,那么你需要一个状态表来存储结果。

    我最不想看的就是服务经纪人。我还没有使用过它,也不确定它是否合适,但我会将其作为一种选择进行研究。我们已经开始将其视为启动长期运行的断开连接的工作流程的一种方式,但在我们到达任何地方之前,我就离开了公司。

        2
  •  0
  •   shahkalpesh    16 年前

    如果您在调用执行存储过程后不必担心结果,那么异步运行它可能会很好。

        3
  •  0
  •   Kyle West    16 年前

    我想通知进行了需要重建的更改的用户(a)重建即将进行,(b)重建已完成。我想通过UI中的消息和电子邮件来实现这一点。我宁愿让应用程序(而不是DB处理电子邮件)。

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

    当你说在应用服务器上调度服务时,你是指像windows服务这样的专门负责处理这类事情的服务吗?

    推荐文章