从 ADO.NET 正常终止长时间运行的 SQL Server 查询
本文关键字:运行 长时间 SQL 查询 Server 终止 NET ADO 常终止 | 更新日期: 2023-09-27 18:36:58
我使用异步进程从长时间运行的SQL查询中检索数据。该进程通过 SqlCommand.BeginExecuteReader()
方法调用存储过程。
有时,我想关闭进程并正常终止任何正在运行的查询。
经过一些测试,似乎调用SqlConnection.Close()
就足够了。为了更好地衡量,我也明确称SqlConnection.Dispose()
.
通过 SQL Server 事件探查器运行跟踪时,查询似乎已正常结束,因为我在调用 Close()
后看到一个SQL:BatchStarting
后跟一个SQL:BatchCompleted
。
任何人都可以确认是否只需要关闭连接吗?
调用关闭就足够了,只需几点评论:
首先,确保在 finally 块中编写 Close 方法,以确保正确的异常处理。
此外,您不需要同时调用 SqlConnection.Close 和 SqlConnection.Dispose 方法,因为它们都执行相同的操作。添加了Dispose方法以实现IDisposable模式,并且此方法在内部调用SqlConnection.Close方法,该方法具有更自然的名称,因为我们关闭连接,但不:)释放它们
如果您使用的是DataReader,那么每次在您想将连接用于其他目的之后,您也必须关闭它。