我已经在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. 检测非阻塞套接字上的关闭连接
- 2. NIO - 检测已关闭的连接
- 3. 检测在关闭的连接
- 4. Gevent-Websocket检测关闭连接
- 5. AJAX:检测连接关闭,PHP继续
- 6. 强制关闭SQL连接
- 7. 关闭SQL连接(NHibernate)
- 8. 关闭Twisted中的非活动连接
- 9. С#与System.Data.SQLite - 关闭连接
- 10. 检测python的telnetlib中的关闭连接
- 11. 接近检测的关闭点
- 12. 检测关闭的套接字
- 13. 关闭SQL连接的Java web服务
- 14. 如何检测服务器关闭连接的位置?
- 15. 检测node.js中客户端连接的关闭
- 16. 用于检测无序关闭连接的Java socketChannel
- 17. Akka/Scala检测到关闭的TCP连接?
- 18. 无法关闭与NodeJS的mysql连接
- 19. 如何关闭与netty的连接CorsHandler
- 20. 与Mysql的连接未关闭
- 21. 如何关闭与firebase的连接
- 22. 使用LINQ关闭与DB的连接?
- 23. 检测popover关闭
- 24. 检测浏览器连接在PHP中关闭
- 25. C# - SQL连接不会关闭
- 26. SQL Server 2005 - 关闭睡眠连接
- 27. Linq-to-SQL DataClasses连接如何关闭?
- 28. 处置SQL命令,并关闭连接
- 29. SQL Anywhere 11,JZ0C0:连接已关闭
- 30. SQL错误:在java中关闭连接
难道是ADO.NET吗? – 2010-04-12 17:09:28
SqlConnection con = new SqlConnection() 但没有使用,许多没有close()/异常块 – JoeJoe 2010-04-13 20:09:02