繁体   English   中英

从ADO.NET优雅地终止长时间运行的SQL Server查询

[英]Gracefully terminate long running SQL Server query from ADO.NET

我使用异步进程从长时间运行的SQL查询中检索数据。 该进程通过SqlCommand.BeginExecuteReader()方法调用存储过程。

有时,我想关闭我的进程并优雅地终止任何正在运行的查询。

经过一些测试,似乎调用SqlConnection.Close()就足够了。 为了更好地衡量,我还显式调用了SqlConnection.Dispose()

当通过SQL Server Profiler运行跟踪时,看起来好像结束了查询,因为我看到SQL:BatchStarting后跟SQL:BatchCompleted调用Close()

任何人都可以确认是否只需要关闭连接?

呼叫关闭就足够了,只需几句话:

首先确保在finally块中编写Close方法以确保正确的异常处理。

此外,您不需要同时调用SqlConnection.Close和SqlConnection.Dispose方法,因为它们都是相同的。 添加Dispose方法实现IDisposable模式,此方法在内部调用SqlConnection.Close方法,该方法具有更自然的名称,因为我们关闭连接,但不处理它们:)

如果您正在使用DataReader,那么每次想要将连接用于其他目的之后,您也必须关闭它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM