我有一个运行大约3分钟的sql存储过程,我希望从asp.net执行这个存储过程,但我知道如果我这样做,那asp.net很可能会超时。
我正在考虑在sql中创建一个作业来让它执行该存储过程,并让asp.net调用一个存储过程来调用该作业。 我有一个表,它在存储过程开始时以及结束时更新。
我的应用程序将使用它来确定脚本何时完成,但是,我想知道是否有另一种方法来运行存储过程而不是让它等待它完成推送响应。
我只是想知道是否有更有效的方法来执行此操作,或者我是否应该坚持为需要永久运行的脚本创建作业。
答案 0 :(得分:3)
这听起来很适合使用Service Broker。
答案 1 :(得分:3)
查看此文章:Asynchronous procedure execution。这些文章提供了代码示例,并解释了为什么利用内部activation比依赖SQL代理作业更好。这样的运行过程是可靠的(与ADO.NEt异步BeginExecuteXXX不同,即使客户端断开连接也能保证执行),即使在SQL Server重启后甚至在灾难恢复服务器重建之后也会执行。
答案 2 :(得分:0)
如果您不关心结果,可以使用SqlCommand.BeginExecuteNonQuery()
方法。这将在后台线程上触发命令。有关MSDN的更多信息。