从 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

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

从 ADO.NET 正常终止长时间运行的 SQL Server 查询

调用关闭就足够了,只需几点评论:

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

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

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