日期:2014-05-19  浏览次数:20357 次

请教关于使用微软企业库连接SQL2000,有时GetConnection取不到连接的问题
请教,我网站用企业库的GetConnection来得到连接,但发现在系统日志里总出现这个函数取不到连接的情况

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

不知这是什么原因?

一天出个一次的样子,不知是不是要设连接池的大小,在哪里设?


------解决方案--------------------
这个framework一直没敢用它
------解决方案--------------------
修改你的web.config中的链接字符串部分

例如下面
<add name= "SQLProfileConnString " connectionString= "server=(local);user id=sa;password=newlife;database=MSPetShop4Profile;min pool size=4;max pool size=4;packet size=3072 " providerName= "System.Data.SqlClient "/>

min pool size=4;最小池链接数
max pool size=4 最大池链接数(设置大点:))
------解决方案--------------------
对,GetConnection也是需要配置的
------解决方案--------------------
一直没机会用这个库...
------解决方案--------------------
你要是用了企业库,最好用企业库带的配置工具来配置,感觉你的企业库配置有问题
要是没记错的话.net的连接池默认是min:1 max:100,如果连sqlserver的话,采用的是类似于迟绑定的算法,也就是,你并发打开了那些连接,那会放到连接池里保持,但是,开始没有用到的时候,他是不会给你初始化好的。
另外一个问题,既然已经用了企业库,为什么不用企业库的方法通过Database访问数据呢。
------解决方案--------------------
没用过,不过觉得MSSQL有配置工具可是使用,毕竟都是MS的东西。
------解决方案--------------------
企业库的数据访问块说白了就是原来的SQLHelper的升级,其实整个企业库就是一个程序应用库,而不是一个应用服务器层的东西,也不是O/R Mapping之类的工具
所以,用企业库访问数据库,和一般的没有什么区别,该写SQL的还是要写SQL的
关于连接池,企业库不是应用服务器层的东西,因此,从根本上,他是不会维护连接池这些东西的,虽然没有具体看过它的代码,但是,可以肯定的是,真正的连接池管理,还是ADO.net。
实际上企业库的数据访问块主要解决的问题,一个是部署方面的,比如连接串加密之类的
一个对数据库访问的便捷,比如访问存诸过程之类的,
再有一个就是你最后提到的,多数据库之间的透明(当然这是有前提的,这个要从数据库设计就要考虑的问题),和逻辑和物理数据库之间的松偶合
具体的介绍,你可以看Webcast
http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/EntLib.aspx

------解决方案--------------------
Data Source=localhost;
Initial Catalog=Northwind;
User ID=sa;Password=sa;
Pooling=true;
min pool size=4;
max pool size=1000;
packet size=3072

连接串