查找所有打开的SqlConnection

本文关键字:SqlConnection 查找 | 更新日期: 2023-09-27 18:20:28

我在另一台服务器上向Sql Server读取和写入数据,因此我需要打开许多SqlConnection,我在读取或写入完成后关闭它们,但有时我无法连接到服务器,但在我重新启动服务器后,一切都很好,我想是因为一些SqlConnection打开了,如果存在的话,有什么方法可以找到它们吗?

查找所有打开的SqlConnection

简短的回答是"否"。你能做到这一点的唯一方法是显式地添加你自己的跟踪代码,但你所做的实际上是冒着抓住它们更长时间的风险,而且你很可能会忘记在你已经忘记关闭东西的两个地方添加它。

这里首选的"修复"是:停止担心关闭的事情,而是启动using。如果您每次触摸连接时都使用using,则不能忘记释放它。

using(var conn = whatever.GetOpenConnection()) {
    // ... do stuff
} // <=== here it will be disposed for us automatically, success or failure
  // and disposable includes Close()

这同样适用于实现IDisposable的任何类型。在ADO.NET的情况下,它也包括命令和读取器。