如何判断我在Windows服务中打开了多少个SQL连接?

时间:2008-09-18 20:14:29

标签: .net sql-server ado.net sqlconnection

我看到一些错误表明“连接泄漏”。也就是说,没有正确关闭的连接和池正在耗尽。那么,我该如何进行检测以确定在给定时间确切打开了多少?

7 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

主数据库中的sp_who2存储过程对于数据库端来说是很好的。它将显示与数据库的连接。如果您正在寻找更多数据,请尝试分析。

答案 2 :(得分:1)

实施一项服务,即创建,打开和关闭所有连接。在那里拿一个柜台。每次打开或关闭连接时都要记录您的日志记录框架。

答案 3 :(得分:0)

您可以使用探查器工具跟踪所有现有和打开和关闭的连接

您可以从企业管理器

打开探查器

答案 4 :(得分:0)

如果您使用的是SQL 2000,则可以签入SQL 2000企业管理器:

  

查看当前活动窗口   SQL Server企业管理器,展开   一个服务器组,然后展开一个   服务器。展开管理,然后   展开当前活动。单击“处理”   信息。

     

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

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

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

使用“using”语句确保您的连接始终处于关闭状态,并且您再也不会遇到此问题:

using(SqlConnection connection = new SqlConnection())
{
...
} // connection is always disposed (i.e. closed) here, even if an exception is thrown