在asp.net/Sqlserver项目中,我们使用ado.net(sql身份验证)创建连接,我们看到“睡眠”,“等待命令”状态中存在大量活动连接的行为
代码执行以下操作 - 从常用功能获取连接,更新数据库,提交事务,关闭&处置交易,关闭连接。
1)在sqlserver 2008中,当我们的程序运行一段时间(它每隔几秒更新一次数据库)时,活动连接数急剧增加,sqlserver开始拒绝新连接(因为默认连接为100) 2)在sqlserver 2005中,我们看到连接被重用并且工作正常。我们的最大连接数不超过15-20。
我们在2008年发现了MSFT的一个问题并传达给了客户。 https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=383517 - 谈论2008年不立即发布封闭式连接。
在客户端,我们在sql2005中也看到了相同的问题。
我的问题是,当.net程序在连接上调用close()时,sqlserver会将它保持多长时间?
非常感谢任何提示
此致 阿南德
答案 0 :(得分:1)
连接正在进入池中。如果它们没有从那里重复使用,并且连接数量增加,那么你肯定没有正确地清理它们。对任何一次性类型(也包括事务,命令和其他)使用using
块。
要清除连接池,可以调用此静态方法:
SqlConnection.ClearAllPools();
这应删除所有连接,并且池中未使用。其他人仍在使用中。