【问题标题】:Submit long-running SQL query from ASP.NET从 ASP.NET 提交长时间运行的 SQL 查询
【发布时间】:2017-09-10 17:43:14
【问题描述】:

我有一个 ASP.NET Web 应用程序,它需要提交一个带有参数的长时间运行的 SQL 存储过程。它可以运行长达 30 分钟。如何提交以作为作业在 sql server 上运行,以便 Web 应用程序可以继续执行其他操作?是否可以从 ASP.NET 检查作业是否已完成?

【问题讨论】:

  • 您可以使用异步方法和 await 关键字。
  • 我一般会创建一个backgroundworker,将sql i放入backgroundworker中。带有 SQL.CMD 的 SQL Server 命令,它是对数据库的命令行查询。我经常创建一个进程来运行 SQL.CMD 并将结果放入 csv 文件中。然后稍后将 csv 文件读入 c#。 SQL.CMD 比通过 c# 接口运行查询更高效。
  • 了解 Quartz.NET 或 HangFire
  • 我认为作为 sql 作业运行会更好,因为即使用户关闭浏览器或应用程序池被回收,它也会继续运行。
  • 一个可能的解决方案是查看QueueBackgroundWorkItem 虽然在 IIS 中长时间运行的任务由于 AppPool 回收而存在问题。

标签: c# asp.net sql-server tsql


【解决方案1】:

我会通过将查询放入作业来处理这个问题。然后页面/网站会检查作业是否完成。

开始工作 How to start SQL Server job from a stored procedure?

检查作业状态 How can I determine the status of a job?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2021-09-13
    • 2023-03-10
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多