诊断SqlConnection泄漏?

时间:2009-03-26 20:10:58

标签: .net sqlconnection

我遇到的问题是Web应用程序耗尽了连接池中的所有可用连接。我似乎记得一些用于诊断所有活动连接的好工具,但我画了一个空白。诊断此问题有哪些好的选择?

4 个答案:

答案 0 :(得分:2)

您是否在应用程序中使用SqlDataReader对象? SqlDataReader对象将保持其连接打开,直到它关闭。

答案 1 :(得分:1)

我投票支持代码审核。我曾经遇到过与第三方构建的应用程序类似的情况,并且在快速暴露的情况下搜索连接时没有使用/ finally来确保在发生异常时关闭连接。

正如Michael指出的那样,您必须确保数据读取器使用的连接已关闭。您可以指定在关闭阅读器时关闭连接,然后对于这些情况,只需确保处理数据阅读器(使用using(){})

答案 2 :(得分:1)

您可以运行sp_who以查看来自SQL Server的活动连接,但是,您可能没有像其他人建议的那样关闭连接。但是,如果要关闭连接,但是立即重新打开它们(比如在循环中读取文本文件或其他内容),即使您认为要关闭它们,也可以使用它们(请查看Connection Pooling)。如果您发布代码示例,我想您会得到更好的答案。

答案 3 :(得分:1)

.Net memory profiler的{p> WinDbg with SOS将允许您跟踪谁持有对您的连接对象的引用,使用该信息您应该能够追踪有问题的方法。