我已經在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