【问题标题】:How can I tell how many SQL Connections I have open in a windows service?如何知道我在 Windows 服务中打开了多少 SQL 连接?
【发布时间】:2008-09-18 20:14:29
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          您可以从企业管理器中打开分析器

          【讨论】:

            【解决方案5】:

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

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

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

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

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

            【讨论】:

              【解决方案6】:

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

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

              【讨论】:

                【解决方案7】:

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

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-09-24
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-03-13
                  • 2021-12-22
                  • 1970-01-01
                  • 2020-05-04
                  • 2021-02-19
                  相关资源
                  最近更新 更多