【发布时间】:2008-09-18 20:14:29
【问题描述】:
我看到一些表明“连接泄漏”的错误。也就是说,连接未正确关闭并且池即将用完。那么,我该如何进行检测以查看在给定时间打开的确切数量?
【问题讨论】:
标签: .net sql-server ado.net sqlconnection
我看到一些表明“连接泄漏”的错误。也就是说,连接未正确关闭并且池即将用完。那么,我该如何进行检测以查看在给定时间打开的确切数量?
【问题讨论】:
标签: .net sql-server ado.net sqlconnection
主表中的sp_who2 存储过程从数据库方面来说非常适合。它将向您显示与数据库的连接。如果您正在寻找更多数据,请尝试分析。
【讨论】:
实现一个服务,通过该服务创建、打开和关闭所有连接。在那里放一个柜台。每次打开或关闭连接时使用您的日志框架进行记录。
【讨论】:
您可以使用分析器工具来跟踪所有现有的以及打开和关闭的连接
您可以从企业管理器中打开分析器
【讨论】:
如果您使用的是 SQL 2000,您可以在 SQL 2000 Enterprise Manager 中签入:
查看当前活动窗口在 SQL Server 企业管理器,展开 一个服务器组,然后展开一个 服务器。展开管理,然后 展开当前活动。点击流程 信息。
当前服务器活动是 显示在详细信息窗格中。
(http://technet.microsoft.com/en-us/library/cc738560.aspx)
(来自 Google 搜索:sql 2000 当前活动)
【讨论】:
您可以在 SQL Server Management Studio 或查询分析器中运行 sp_who2 来查看所有当前连接。那就是 SQL Server。我不确定您使用的是哪个 RDBMS。
另外,查看您的代码并确保在不再需要连接时立即关闭它。对此保持警惕!
【讨论】:
使用“using”语句确保您的连接始终关闭,您将永远不会再遇到此问题:
using(SqlConnection connection = new SqlConnection())
{
...
} // connection is always disposed (i.e. closed) here, even if an exception is thrown
【讨论】: