【发布时间】:2017-06-05 10:24:31
【问题描述】:
我正在尝试识别我的应用程序中的 SQL 连接泄漏。经过一些操作后,当我的应用程序处于空闲状态(用户没有进行任何活动)时,我在sp_who2 返回的结果集中看到与我的数据库的 7 个连接。所有连接的状态为Sleeping,Command 的值均为AWAITING COMMAND。
我正在使用连接池,但连接字符串中未指定 Connection Lifetime。这意味着如果我是对的,它将使用默认值 0。 Connection Lifetime 的值为 0 意味着 SQL Server 永远不应该关闭连接,对吧?
我让我的应用程序空闲了一段时间(15-20 分钟),然后我看到sp_who2 没有显示与我的数据库的任何连接。我想知道为什么当 Connection Lifetime 为零时会得到这个结果。 SQL Server 是否会在一段时间后终止未使用的连接而不管连接生命周期值如何?
我如何识别哪个连接由于泄漏而打开,哪个连接由于连接池而挂在那里?
我的应用程序支持 SQL Server 2008、2014 和 2016。它是 ASP.NET 应用程序。
【问题讨论】:
标签: sql-server ado.net database-connection connection-pooling connection-leaks