【发布时间】:2016-02-27 05:39:03
【问题描述】:
我有一个长时间运行的存储过程,它从旧系统导入大量记录,并且需要数小时才能执行。在执行时,IIS 进程可能需要回收或 Web 服务器需要重新启动或其他导致 IIS 进程结束并因此中止存储过程的执行的事情。
我决定在断开连接的环境中从 w3wp.exe 进程中运行存储过程。
解决方案:
- Service Broker 激活:我读过this,但它很复杂,而且diagnosting service queue is difficult
- 在 Windows 服务下运行:
- 定义一个 SQL Server 作业:它需要 SQLAgentReaderRole 角色权限,我需要将参数传递给存储过程
还有其他解决方案吗?
【问题讨论】:
-
从 Web 应用程序调用的控制台应用程序怎么样?这是一个非常简单的解决方案,你可以传递参数,它可以运行几个小时
-
Windows Service 比 Console App 好,但重启服务器时两者都不会自动运行。服务代理解决方案支持这一点。
-
我用过hangfire.io,它适用于这类事情。
标签: c# sql-server iis stored-procedures