【如何访问多数据库连接池的数据 - 经验总结 www.jingyanzongjie.com】
当连接打开时 , SqlConnection对象的ConnectString属性将根据一种精确的匹配算法来创建连接池,该算法会使连接池与连接中的字符串相关联 。每个连接池都与一个不同的连接字符串相关联 。当新连接打开时,如果连接字符串不精确匹配现有池,则将创建一个新池 。连接池一旦创建,直到活动进程终止时才会被毁坏 。维护不活动的池或空池占用的系统资源非常少 。连接池是为每个唯一的连接字符串创建的 。当创建一个池后 , 将创建多个连接对象并将其添加到该池中,以满足最小池大小的要求 。连接将根据需要添加到池中,直至达到最大池大小 。在请求 SqlConnection对象时,如果存在可用的连接,则将从池中获取该对象 。要成为可用连接,该连接当前必须未被使用,具有匹配的事务上下文或者不与任何事务上下文相关联,并且具有与服务器的有效链接 。如果已达到最大池大小且不存在可用的连接,则该请求将会排队 。当连接被释放回池中时,连接池管理程序通过重新分配连接来满足这些请求 。连接在关闭或断开时释放回池中 。------解决方案--------------------------------------------------------数据库连接池不是.NET去控制的,由數據庫本身控制的.你可以在WebConfig /App.Config中設定 ConnectionString時加上 MultipleActiveResultSets = True这样设定来启动多活动结果集来优化连接.不过这个设定仅适合SQL Server 2005(含)以上版本.------解决方案--------------------------------------------------------你这就是拿锅铲躲雨-总会有地方照顾不到.如果你是CS,不论你DB是Oracle还是SQL Server,客户端是瘦客户端.那么访问数据,获取资料,再返回资料这部分就应该抽取由WebService或者WCF来完成你在每个CS客户端以不同用户远程同一台服务器 , 启动的是同一个程序,现在每启动一个实例你觉得不同用户进程之间的通讯容易一下还是直接统一访问数据,获取资料容易一些?探讨先说明一下我访问的是Oracle,并且是CS程序 , 如果一个进程内部,当然可以自动启用连接池,一个程序我只占了一个连接,查询数据库也的确如此 , 当如果我启动两个进程,那数据库那边连接就变成了二个,如果我同时打开三个进程,则连接一定是三个 , 连接池是跟进程与作用域相关联的 , 不知道有没有办法让多个进程共享同一连接池 。------解决方案--------------------------------------------------------------解决方案--------------------------------------------------------webservice还不就是干这类的事------解决方案--------------------------------------------------------用完了就放回去,就这么简单 。