chasing4288

sqlserver 处理连接池问题

当网站链接数据库的用户较多时,如果上一个连接没有提交事务,有可能下一个连接会遇到因为上一个连接的事务没有提交从而导致后面的链接无法访问数据库。微软的SQLSERVER客户端编程接口:ADO和ADO.NET 都支持连接池这种机制。报错信息可能为“所有连接池均在使用,并且达到最大池大小”。

解决办法:

1、如果是ODBC的话,则可以在ODBC 中手动更改。选择“Pool Connetions to this drive”(使用池连接该驱动程序),把下面的时间改的大一点。

2、如果是SqlConnection的共享连接,则为ConnectionString属性Connection Lifetime数值名称指定一个值,该值默认情况下是0,表示连接永远不会从池中被自动移走。如果指定一个不同的值,那么一旦连接被返回到池中,该值将和连接的创建时间及当前时间进行比较。如果生存期超过了Connection Lifetime的值,那么连接将从池中被移走。在连接字符串的后面加上以下代码:Enlist=true;Pooling=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;user id=sa;packet size=1000 packet size参数取512到32767中的任一整数值。

3、DataReader是独占连接的,当链接人数超过DataReader的最大限制时就会出现问题。

 

posted on 2018-07-18 10:26  chasing4288  阅读(949)  评论(0编辑  收藏  举报

导航