sql-server – 如何跟踪数据库连接泄漏
我们有一个似乎有连接泄漏的应用程序(SQL Server表示已达到最大池大小).我独自在我的开发机器上(很明显),只是通过导航应用程序,我触发了这个错误. SQL Server活动监视器使用我的数据库显示大量进程.
我想找到哪些文件打开连接但不使用它.我正在考虑使用像grep这样的东西,为每个文件计算“.Open()”的数量和“.Close()”的数量,并获得数字不相等的文件. 加分问题:SQL Server活动监视器中找到的进程是否与连接相对应?如果没有,我如何找出我的数据库中打开了多少个连接? 该应用程序在asp.net(vb)3.5,与SQL Server 2005.我们目前不使用LINQ(尚未)或类似的东西. 谢谢 解决方法查看SQL Server端的代码时,可以运行以下查询以获取上次在休眠连接上运行查询的视图. (打开连接什么都不做)SELECT ec.session_id,last_read,last_write,text,client_net_address,program_name,host_process_id,login_name FROM sys.dm_exec_connections ec JOIN sys.dm_exec_sessions es ON ec.session_id = es.session_id CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) AS dest where es.status = 'sleeping' 从应用程序端,您可以使用sos.dll进行调试,如以下文章中所述: > How to troubleshoot leaked SqlConnection Objects Part 1 如果您需要有关如何使用windbg的更多信息,这些文章是一个很好的介绍: > Getting Started with WinDBG Part 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |