6

我看到一些表明“连接泄漏”的错误。也就是说,连接未正确关闭并且池即将用完。那么,我该如何进行检测以查看在给定时间打开的确切数量?

4

7 回答 7

6

如果您使用的是 .net,则 PerfMon 中有用于 SQL 服务器的 .net 数据提供程序。您可以在那里查看 NumberOfPooledConnections

性能监视器的屏幕截图

于 2008-09-18T20:21:31.770 回答
2

从数据库方面来看,主表中的 sp_who2 存储过程非常适合。它将向您显示与数据库的连接。如果您正在寻找更多数据,请尝试进行分析。

于 2008-09-18T20:18:46.580 回答
1

实现一个服务,通过它创建、打开和关闭所有连接。在那里放一个柜台。每次打开或关闭连接时,使用您的日志记录框架进行记录。

于 2008-09-18T20:19:11.867 回答
0

您可以使用分析器工具来跟踪所有现有的以及打开和关闭的连接

您可以从企业管理器中打开探查器

于 2008-09-18T20:20:05.610 回答
0

如果您使用的是 SQL 2000,则可以签入 SQL 2000 Enterprise Manager:

查看当前活动窗口 在 SQL Server 企业管理器中,展开服务器组,然后展开服务器。展开管理,然后展开当前活动。单击进程信息。

当前服务器活动显示在详细信息窗格中。

( http://technet.microsoft.com/en-us/library/cc738560.aspx )

(来自谷歌搜索:sql 2000 当前活动)

于 2008-09-18T20:21:33.843 回答
0

您可以在 SQL Server Management Studio 或查询分析器中运行 sp_who2 以查看所有当前连接。那就是 SQL Server。我不确定您使用的是哪个 RDBMS。

此外,查看您的代码并确保在不再需要连接时立即关闭它。对这个肛门!

于 2008-09-18T20:21:54.497 回答
0

使用“using”语句确保您的连接始终关闭,您将永远不会再遇到此问题:

using(SqlConnection connection = new SqlConnection())
{
...
} // connection is always disposed (i.e. closed) here, even if an exception is thrown
于 2008-09-23T16:33:27.163 回答