日期:2014-05-18  浏览次数:20470 次

数据库访问超时的问题
有A,B二台电脑,A做为服务器,现在有一个项目,A上有一份,B上有一份
项目在A上任何时候运行都正常(项目在B上运行出现下面说的那种问题的时候也正常),
项目在B上运行的时候就是提示“数据库连接超时,数据库连接池达最大。。。。。”

我好好检查了下,没有哪些地方没有关连接的,再有就是,B上出现这个问题的时候为什么A上的项目还能正常运行了,?

B上如果访问的是自已本机上的数据库也不会出来这种问题;

------解决方案--------------------
链接没有完全关闭。导致达到最大连接数
------解决方案--------------------
连接池已满?
------解决方案--------------------
在代码结构上就使用using(){}这种结构确保可以及时关闭连接
------解决方案--------------------
我也曾经碰到过这样的问题,试着修改一下你的连接字符串,我使用:
server=(SRVNAME);initial catalog=db_name;uid=sa;pwd=pwd;时链接错误,但使用
database=(SRVNAME);initial catalog=db_name;uid=sa;pwd=pwd;时连接正常。

你也可以试一下,多换几种写法,看看是不是这里的问题。
------解决方案--------------------
B為Server時,兩臺機器的程式都沒有問題,這樣可以排除程式有問題了。
應該是A機器的DB設置問題
------解决方案--------------------
应该是数据设置问题,还有就是A服务器本身的设置(如果是IIS配置,也有一个最大的连接数)
------解决方案--------------------
看看数据库中的并发连接数
------解决方案--------------------
参考 http://topic.csdn.net/u/20080424/09/0c9ffd71-90b5-41d9-a8d8-9c25f42c3fbd.html
------解决方案--------------------
加个Connection Timeout=30;
如果不行就增加连接池的数量!!
------解决方案--------------------
我假设一种可能性
就是楼主的代码有问题。

在B项目中的数据库连接字符串没有改过来,还是连的A项目上的数据库,所以导致A,B两个项目的数据库访问负担都由A项目中的数据库来抗了,所以最终导致A抗不住鸟。。。。。
------解决方案--------------------
探讨
在代码结构上就使用using(){}这种结构确保可以及时关闭连接

------解决方案--------------------
其实用推理学上面的逻辑也可以证明的。
数据库连接池达到最大->数据库连接过多->连接数据库的人过多->A项目->B项目。最终我们推出结果,是数据库连接人数过多。。
------解决方案--------------------
phpkill你不是搞笑么?当然是数据库连接人数过多了,但是楼主的问题是为什么数据库的连接人数会过多?
------解决方案--------------------
检查打开的连接是否关闭了
然后看看数据库连接 有没问题