从 IIS 进程外长时间运行的存储过程
本文关键字:运行 存储过程 长时间 IIS 进程 | 更新日期: 2023-09-27 18:36:32
我有一个长时间运行的存储过程,它从旧系统导入大量记录,需要几个小时才能执行。在执行时,IIS 进程可能需要回收,或者 Web 服务器需要重新启动,或者导致 IIS 进程结束并因此中止存储过程执行的其他内容。
我决定在断开连接的环境中从 w3wp.exe 进程中运行存储过程。
解决 方案:
- 服务代理激活:I阅读此内容,但它很复杂,诊断服务队列很困难
- 在 Windows 服务下运行:
- 定义 SQL Server 作业:它需要 SQLAgentReaderRole 角色权限,我需要将参数传递给存储过程
还有其他解决方案吗?
我个人更喜欢Windows服务路线。最近我使用了自托管WebApi,它允许我从MVC启动长时间运行的作业(使用HttpClient或System.Net.HttpWebRequest等)。
CLR 程序集。
使用此代码将代码更改为类库,并将类库的 DLL 结果导入为 SSMS 的程序集函数
CREATE ASSEMBLY myAssembly from 'E:'Projects'CL.dll'
现在,您可以调用它,而无需担心IIS停止。