我已经在ASP.net,SQL 2005中继承了一个非常大的项目,并且发现某些SQL连接没有关闭 - 这很糟糕。没有通过每一行代码,有没有办法检测连接是否没有关闭?性能计数器?作为后续 - SQL如何回收未关闭的连接。我正在使用非集合连接字符串。检测与SQL的非关闭连接
3
A
回答
4
- Sql不回收它们。他们是开放的,直到管理员关闭,或者 - 从客户端。
- 这将是garbace收集连接对象。
可能是内存分析器是你最好的选择 - 尝试找出(丢失和不处理)连接的来源。
看起来对我来说真的很糟糕的代码 - 因为在我所写的所有asp.net应用程序中,连接只在代码中的一个点处理。似乎有人在这里到处传播。
一个提示可能是:从这些陈旧的连接中查看SQL。你应该能够检索到最后一个sql语句,这可能会给你一个提示它们来源的提示。
3
我知道你说你不想经历每一行代码,但由于连接可以传递(或不传递),你可能没有太多的选择。一些可能有助于使用此正则表达式(仅适用于VS找到窗口):
//matches any constructor call to SqlConnection
new:Zs*(System.)*(Data.)*(SqlClient.)*SqlConnection(\([0-9a-zA-Z]*\))
这将帮助你找到你的连接初始化,这可能有助于加快速度。我认为TomTom是正确的,因为你可能正在处理具有高圈复杂度的蹩脚代码,所以如果没有目视检查,你可能不会找到每个案例。小心检查连接是否被传递。你可能会有一个痛苦的重构来临,但我保证它会以黑桃的形式回报。
祝你好运,希望这有助于!
相关问题
- 1. 连接关闭,EOF检测
- 2. SQL Server连接池不检测关闭的连接?
- 3. 检测非阻塞套接字上的关闭连接
- 4. 检测在关闭的连接
- 5. 检测Restlet中的关闭连接
- 6. NIO - 检测已关闭的连接
- 7. AJAX:检测连接关闭,PHP继续
- 8. 在Rails中检测HTTP连接关闭
- 9. c#Compact Framework检测连接已关闭
- 10. Gevent-Websocket检测关闭连接
- 11. 如何检测连接池中的关闭连接?
- 12. 关闭窗体关闭SQL连接(C#)
- 13. 本地主机连接关闭未检测到与选择
- 14. 强制关闭SQL连接
- 15. 关闭SQL连接(NHibernate)
- 16. NodeJS - SQL Server连接关闭
- 17. 关闭Twisted中的非活动连接
- 18. 重新连接tcpsocket(或如何检测关闭的套接字)
- 19. С#与System.Data.SQLite - 关闭连接
- 20. C++检测客户端是否关闭连接(多套接字)
- 21. 检测python的telnetlib中的关闭连接
- 22. 检测关闭的套接字
- 23. 接近检测的关闭点
- 24. 关闭常规ASP中的SQL连接
- 25. 关闭SQL连接的Java web服务
- 26. 如何检测服务器关闭连接的位置?
- 27. 用于检测无序关闭连接的Java socketChannel
- 28. 检测node.js中客户端连接的关闭
- 29. 检测web.py中过早关闭的连接
- 30. Akka/Scala检测到关闭的TCP连接?
难道是ADO.NET吗? – 2010-04-12 17:09:28
SqlConnection con = new SqlConnection() 但没有使用,许多没有close()/异常块 – JoeJoe 2010-04-13 20:09:02