sql-server – 我可以启动存储过程并立即返回而不等待它完成吗?

前端之家收集整理的这篇文章主要介绍了sql-server – 我可以启动存储过程并立即返回而不等待它完成吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有一个存储过程,用户可以手动运行该过程,以获取一整天不断使用的报告的更新数字.

我有第二个存储过程应该在第一个存储过程运行后运行,因为它基于从第一个存储过程获得的数字,但是它需要更长的时间来运行并且是一个单独的进程,所以我不想使用户在第二个存储过程运行时等待.

有没有办法让一个存储过程启动第二个存储过程,并立即返回而不等待结果?

我正在使用sql Server 2005.

解决方法

看起来有多种方法可以实现这一点,但我发现最简单的方法是在sql作业中设置过程的 Martin’s suggestion,并使用我的存储过程中的异步 sp_start_job命令启动它.
EXEC msdb.dbo.sp_start_job @job_name='Run2ndStoredProcedure'

这只适用于我,因为我不需要为我的存储过程指定任何参数.

其他建议可能会根据您的情况而有效

>使用像MartinSebastian这样的SQL Service Broker建议.如果您不介意设置它的复杂性并了解它的工作原理,这可能是最好的建议.
>在负责执行存储过程的代码中异步运行进程,如Mr.Brownstone suggested.

这不是一个坏主意,但在我的情况下,存储过程从多个地方调用,所以找到所有这些地方并确保他们调用第二个过程似乎并不实际.此外,第二个存储过程非常关键,忘记运行它可能会给我们公司带来一些重大问题.
>让第一个程序设置一个标志,并设置一个定期作业来检查该标志并运行它的设置,如Jimbo suggested.我不是一个很大的粉丝,不断运行并每隔几分钟检查一次更改,但它肯定是一个值得考虑的选择,取决于你的情况.

猜你在找的MsSQL相关文章