是否可以从.net线程中激发并忘记一条长时间运行的SQL语句(在SQLServer2005+上)

本文关键字:SQL 运行 长时间 语句 SQLServer2005+ 一条 忘记 net 线程 是否 | 更新日期: 2023-09-27 18:27:05

我正在通过BeginExecuteNonQuery启动一个运行时间很长的查询。

我想关闭我的连接,并允许此查询在服务器上继续工作(稍后我将通过新的连接/线程检查结果)。

然而,似乎每当我的连接被垃圾收集时(即使我没有特别关闭它),服务器端进程就会终止。

我正在使用连接池,怀疑这可能是问题所在——有人能为我提出解决方案吗?

谢谢!

编辑:有人在评论中提到了这一点(然后删除了评论?!)http://rusanu.com/2009/08/05/asynchronous-procedure-execution/

它非常有用,但需要我创建一个服务、队列和几个存储的proc,而我并不真的想这么做

此外,我不能保证Sql代理服务处于活动状态,因此无法创建作业来运行Sql,这很不幸。

是否可以从.net线程中激发并忘记一条长时间运行的SQL语句(在SQLServer2005+上)

关闭在BeginExecuteNonQuery中注册的回调内部的连接。作为副作用,这将使SqlConnection对象保持活动状态。此外,您还需要确保无论如何都可以进行处置,即使对于长时间运行的语句也是如此。