[已解决问题] 关于数据库连接问题??
提问时间: 2007-11-27 10:46
浏览:730 次

最近网站连接数据库经常出现以下异常信息

超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

连接池设置大了也是这样子,连的是SQL2005的数据库,请问有何解决方法。把进程中的w3wp关闭一下,就又正常了。


提问者:李.net - 菜鸟二级

问题补充: using (SqlConnection conn = new SqlConnection(connectionString))
{
.....
}
每次调用数据库操作后,已关闭
另外,因为用了ajax,页面上的信息都是通过js调用webservice再来构造数据格式的,这里的并发数据可能比较多。也奇怪,放到外网上,这个好象还没有发现。但在我本机上调试,经常这个样子。经查看发现,所有的连接都打开了,但处于闲置状态,真是奇怪的,我用的是微软的那个sqlhelper来做为数据库操作的

最佳答案
查看您的网站源代码,在每个Connection被Open的后面是否都跟随一个Connection被Close。即如下形式:
'VB Code------
Private Sub Demo()
……'其他代码
'connection的定义,如定义为Con
Con.Open()
……'其他代码
Con.Close()
……'其他代码
End Sub

//C# Code------
private void Demo()
{
……//其他代码
//connection的定义,如定义为Con
Con.Open();
……//其他代码
Con.Close();
……//其他代码
}
如果所有Open和Close不是一一对应,即缺少了Close就会出现楼主所说的现象了!

补充问题解答:你可以对微软的SqlHelper进行调试,我曾今也使用过,我印象中SqlHelper似乎有个地方是错的(忘了是哪里),你可以逐句调试看看!
2007/11/27 11:08:59 回答者:刚刚
其它回答(6)
LZ有没有在每次使用完以后立刻关闭呢
5个月前   回答者:AndyFish - 小虾三级
我尝试下回答问题哈……看看感觉和百度知道有啥不同
5个月前   回答者:小名阿铁 - 初学一级
这个问题95%是因为数据连接用完了不关闭

我之前要求手下的程序员写数据库程序一律这个格式:

try{
    conn.Open();
} finally {
    conn.Close();
}
5个月前   回答者:狂人 - 菜鸟二级
确保连接字符串来自一个地方
5个月前   回答者:阿勇 - 菜鸟二级
我以前遇到过是设置的连接池数据数目太小 然后同时请求的太多,稍微加大了连接池的数据就可以了。
你可以试一下 
不过在试之前,要先检查是否有未关闭的连接
5个月前   回答者:张荣华 - 小虾三级
在运行之前判断是否已经OPEN..如果已经OPEN了就要在OPEN了..如果没有在OPEN..然后用完之后都要CLOSE. 在FINALLY里面 CLOSE 
5个月前   回答者:空空佛 - 菜鸟二级
评论
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除