我如何知道我在Windows服务中打开了多少个SQL连接?
时间:2020-03-06 14:23:18 来源:igfitidea点击:
我看到一些指示"连接泄漏"的错误。也就是说,未正确关闭的连接和池即将用尽。那么,我该如何进行检测以准确查看给定时间有多少张呢?
解决方案
从数据库方面来说,主表中的sp_who2存储过程对此非常有用。它将显示我们与数据库的连接。如果我们正在寻找更多数据,请尝试进行性能分析。
实施一项服务,以创建,打开和关闭所有连接。在那里放一个柜台。每次打开或者关闭连接时,请使用日志记录框架进行记录。
我们可以使用探查器工具来跟踪所有现有的以及打开和关闭的连接
我们可以从企业经理打开分析器
如果使用的是.net,则PerfMon中有用于SQL Server的.net数据提供程序。我们可以在那里查看NumberOfPooledConnections
如果我们使用的是SQL 2000,则可以签入SQL 2000企业管理器:
To view the Current Activity window In SQL Server Enterprise Manager, expand a server group, and then expand a server. Expand Management, and then expand Current Activity. Click Process Info. The current server activity is displayed in the details pane.
(http://technet.microsoft.com/zh-cn/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