IIS进程中长时间运行的存储过程

时间:2016-02-27 05:39:03

标签: c# sql-server iis stored-procedures

我有一个长时间运行的存储过程,它从旧系统导入大量记录并需要数小时才能执行。执行时,IIS进程可能需要重新启动或Web服务器需要重启或其他导致IIS进程结束的内容,并因此中止存储过程的执行。

我决定在断开连接的环境中运行w3wp.exe进程中的存储过程。

解决方案:

  • Service Broker Activation:我看过this,但它很复杂且diagnosting service queue is difficult
  • 在Windows服务下运行:
  • 定义SQL Server作业:它需要SQLAgentReaderRole角色权限,我需要将参数传递给存储过程

还有其他解决方案吗?

2 个答案:

答案 0 :(得分:0)

我个人更喜欢Windows服务路线。最近我使用self-hosted WebApi允许我从MVC开始一个长期运行的工作(使用HttpClient或System.Net.HttpWebRequest等)。

答案 1 :(得分:0)

  

CLR大会。

将您的代码更改为类库,并使用此代码将类库的dll结果导入为SSMS的汇编函数

CREATE ASSEMBLY myAssembly from 'E:\Projects\CL.dll'

现在您可以在不关心IIS停止的情况下调用它。