繁体   English   中英

SQL Server中的连接泄漏问题

[英]connection leak issue in SQL Server

我使用的是SQL Server 2008 Enterprise + C#+ ADO.Net + .Net 3.5。 我在ADO.Net客户端使用连接池(ADO.Net的默认行为)。 我正在使用sp_who2或sys.dm_exec_connections查找活动连接数(如果我找到有效连接数的方法错误,请告诉我)。

如果每次创建并打开一个新的ADO.Net连接对象后,我将使用匹配的close语句在使用连接对象后关闭ADO.Net连接对象实例(执行存储过程),我想知道在这种情况下,从我的ADO.Net客户端应用程序关闭所有连接后,活动连接数应始终为0,如果显示活动连接数> 0,它应该是非常奇怪的?

乔治,提前谢谢

关闭将释放连接以用于连接池 这并不意味着物理连接已关闭。

还要确保.close在finally中,因此它在常规流和异常发生时执行。

确保正确关闭或处置SqlConnection 处置连接将自动关闭它。

using(SqlConnection connection = new SqlConnection(connectionString))
{
} //The connection will close automatically here

但是你可以明确地在使用结束之前做一个.Close()。

您还可以通过调用清除状态为Awaiting Command的所有挂起连接

SqlConnection.ClearAllPools();

不是这样,ADO.NET连接池将在调用Close后返回到池的连接。 此时连接可能不会真正关闭。 要强制关闭连接,请在关闭之前清除池。 试试这个,你应该看到从服务器关闭连接。

var conn = new SqlConnection("a server goes here");
        conn.Open();

        SqlConnection.ClearAllPools();
        conn.Close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM