然后下次执行()的时候,会判断新的和之前保存的是否一致。
(将被转换为二进制流,也就是说,新的连接字符串必须与连接池中保存的连接的连接字符串完全相同。即使添加了额外的空间或者修改了连接字符串中某些属性的顺序,ADO.Net也会认为这是一个新的连接,并从头开始创建一个新的连接。因此,如果您使用用户标识、密码的身份验证方法,修改密码也会导致连接。如果您使用SQL集成身份验证,您需要保存两个连接使用同一个连接。
然后,ADO.net需要判断当前连接池中是否有可用的连接(没有被其他程序占用),如果没有,ADO.net需要判断连接字符串设置的最大池大小(默认为100)。如果连接池中的所有连接都没有达到最大池大小,ADO.net将再次连接到数据库,创建一个连接,然后将连接返回给程序。
如果达到了最大池大小,ADO.net将不再创建任何新的连接,而是等待连接池中其他程序占用的连接被释放。此等待时间受sqlconnection限制。Connectiontimeout(默认为15秒),也就是说,如果时间超过15秒,SqlConnection就会抛出一个超时错误(所以有时候如果SqlConnection.open()方法抛出一个超时错误,一个可能的原因就是之前的connection没有及时关闭,连接池的数量达到了MaxPoolSize。)
如果有可用的连接,从连接池中检索的连接不会直接返回给程序。ADO.net还需要检查连接字符串的连接重置属性(默认值为真)是否需要第一次重置连接。这是因为从程序返回的连接可能已被修改,例如,使用sqlConnection。更改数据库方法来修改当前连接,返回的连接可能不再连接到由当前连接字符串指定的InitialCatalog数据库。因此,当前连接需要重置一次。然而,所有额外的检查都会增加ADO.netConnectionPool的开销。
相关阅读
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除
标签: #查询最新动态链接超时