我看到一些错误表明“连接泄漏”。也就是说,没有正确关闭的连接和池正在耗尽。那么,我该如何进行检测以确定在给定时间确切打开了多少?
答案 0 :(得分:6)
如果您使用的是.net,那么PerfMon中的SQL服务器的.net数据提供程序。你可以看看那里的NumberOfPooledConnections
答案 1 :(得分:2)
答案 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