在SQL Server中,是否可以调用长时间运行的存储过程,关闭连接并让它完成?我不关心结果。基本上我想说“嘿SQL,在你自己的服务器上做这个工作。”
我想避免让一些服务与开放式连接坐下来等待它。
答案 0 :(得分:2)
您需要使用BeginExecuteNonQuery(AsyncCallback, Object)
,然后使用一个有效无效的回调方法。值得一提的是,连接实际上并不是关闭。
MSDN SqlCommand.BeginExecuteNonQuery Method
或者,您可以使用Service Broker对请求进行排队以运行存储过程。尽管如此,还是有相当多的管道设置。在你的情况下可能不值得。特别是如果您没有使用Service Broker做任何其他事情。这里的优点是可以在使用Service Broker排队后立即关闭连接,并且将消息放入队列是一种非常快速的操作。
答案 1 :(得分:1)
您还可以使用SQL代理作业来运行没有计划的过程,然后发出SQL命令以“EXEC msdb.dbo.sp_start_job @job_name =''”启动作业如果您必须更改命令经常可能不太理想,但如果需要,可以通过SQL调用来完成。