0

我正在尝试识别我的应用程序中的 SQL 连接泄漏。经过一些操作后,当我的应用程序处于空闲状态(用户没有进行任何活动)时,我在sp_who2. 所有连接的状态为,所有连接SleepingCommand值为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 应用程序。

4

1 回答 1

0

Connection Lifetime 的值为 0 意味着 SQL Server 永远不应该关闭连接,对吧?

不。用于清除池的规则没有很好地记录 AFAIK,但它们可以被池化程序关闭。请参阅https://msdn.microsoft.com/en-us/library/8xx3tyca%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

我认为没有可靠/记录在案的方法来识别数据库引擎中的池连接。

于 2017-06-05T12:57:26.627 回答