我有一个长时间运行的存储过程,从旧系统中导入许多记录,需要数小时才能执行完。当执行时,可能需要回收IIS进程或重新启动Web服务器或其他导致IIS进程结束并相应地终止存储过程的操作。我决定在一个脱机环境中使用w3wp.exe进程来运行存储过程。解决方案: 服务代理激活:我阅读了这篇文章,但它很复杂,诊断服务队列很困难 在Windows服务下运行: 定义SQL Server作业:它需要SQLAgentReaderRole角色权限,并且我需要向存储过程传递参数 还有其他解决方案吗?
CLR程序集。将您的代码更改为类库,并将类库的dll结果导入为SSMS的程序集函数,使用以下代码。CREATE ASSEMBLY myAssembly from 'E:\Projects\CL.dll' 现在你可以放心地调用它,而不必担心IIS停止。
我个人更喜欢使用 Windows 服务。最近我在使用自托管WebApi,这使得我可以从 MVC 中启动长时间运行的任务(使用 HttpClient 或 System.Net.HttpWebRequest等)。