代码之家  ›  专栏  ›  技术社区  ›  Joe Phillips

从ASP.NET页运行长时间运行的存储过程(不需要返回)

  •  1
  • Joe Phillips  · 技术社区  · 15 年前

    3 回复  |  直到 15 年前
        1
  •  2
  •   Philip Kelley    15 年前

    • 让应用程序在需要时向队列添加条目。这就是它的全部功能;一旦登录并输入,就不需要维护web会话或状态数据。
    • 将SQL代理作业配置为每1、2、5分钟检查一次,以查看是否有任何作业要运行。
    • 完成后,将其标记为已完成,或者直接删除
    • 检查是否有任何其他项目要运行。如果有,重复;否则,退出作业。

    (我将此方法用于非常长时间运行的方法。这更像是一个管理员类型的技巧,但它可能适合您的情况。)

        2
  •  1
  •   driis    15 年前

    首先准备命令,然后在线程池中将其排队。只需确保线程不依赖于任何HTTP上下文或任何其他HTTP内在对象。如果你的请求在线程之前完成;背景可能消失了。

        3
  •  1
  •   Remus Rusanu    15 年前

    Asynchronous procedure execution

    SQL Server Activation 概念,它允许您在SQLServer的后台线程中运行存储过程

    基于SqlClient异步方法或CLR线程池的解决方案是不可靠的,由于ASP进程被回收,调用会丢失,而且它们在内存队列中积累了请求,这些请求实际上会由于内存消耗而触发进程回收。

    基于表和代理作业的解决方案更好,因为它们是可靠的,但是它们缺少基于激活的解决方案的自调整。