时间:2022-06-12 09:35:18 | 栏目:.NET代码 | 点击:次
参数 | 说明 |
---|---|
Provider | 设置或者返回提供的连接程式的名称,仅用于OLeDbConnection对象 |
Connection Timeout | 在终止尝试并产生异常前,等待连接到服务器的连接时间长度(以秒为单位)。默认值是15秒 |
Initial Catalog或Database | 连接的数据库名称 |
Data Source或Server | 连接打开时使用的SQL Server服务签名,或者Access数据库文件名(localhost或127.0.0.1) |
Password或pwd | Sql Server登录密码 |
User ID或uid | Sql Server登录账户 |
Integrated Sercuity | 决定连接是否是安全连接,可能的值有True,False和SSPI(SSPI和True是同义词) |
以上的参数是不分大小写的,例如uid,UID,Uid都表示连接的数据库用户
Integrated Security参数用于本地windows验证登录时,其值应该设置为True,例如("server=localhost;database=mydb;Integrated security=true")
每当程序需要读写数据库的时候。Connection.Open()会使用ConnectionString连接到数据库,数据库会为程序建立 一个连接,并且保持打开状态,此后程序就可以使用T-SQL语句来查询/更新数据库。当执行到Connection.Close()后,数据库就会关闭当 前的连接。
但是如果我的程序需要不定时的打开和关闭连接,(比如说 ASP.Net 或是 Web Service ),例如当Http Request发送到服务器的时候、,我们需要打开Connection 然后使用Select* from Table 返回一个DataTable/DataSet给客户端/浏览器,然后关闭当前的Connection。那每次都Open/Close Connection 如此的频繁操作对于整个系统无疑就成了一种浪费。
ADO.Net Team就给出了一个比较好地解决方法。将先前的Connection保存起来,当下一次需要打开连接的时候就将先前的Connection 交给下一个连接。这就是Connection Pool。
? (1)、如果指定为False, ADO.net就与数据库之间创建一个连接,然后返回给程序。
? (2)、如果指定为 True,ADO.net就会根据ConnectString创建一个Connection Pool,然后向Connection Pool中填充Connection。填充多少个Connection由Min Pool Size (默认为0)属性来决定。例如如果指定为5,则ADO.net会一次与SQL数据库之间打开5个连接,然后将4个Connection,保存在 Connection Pool中,1个Connection返回给程序。
同时还会判断Connection Lifetime(默认为0)属性,0代表无限大,如果Connection存在的时间超过了Connection LifeTime,ADO.net就会关闭的Connection同时断开与数据库的连接,而不是重新保存到Connection Pool中。
? (1)、如果Connection Pool中的所有Connection没有达到Max Pool Size,ADO.net则会再次连接数据库,创建一个连接,然后将Connection返回给程序。
? (2)、如果已经达到了 MaxPoolSize,ADO.net就不会再次创建任何新的连接,而是等待Connection Pool中被其他程序所占用的Connection释放,这个等待时间受SqlConnection.ConnectionTimeout(默认是15 秒)限制,也就是说如果时间超过了15秒,SqlConnection就会抛出超时错误。
在连接字符串中添加如下内容:
pooling=true;min pool size=5;max pool size=512;
其中Max Pool Size如果未设置则默认为100,理论最大值为32767。最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。在等待队列中,默认等待与服务器的连接的时间为15秒。
默认连接池大小一般是100。
select * from sysprocesses where dbid= db_id('数据库名')
查询出来有几条数据就证明有几个连接数量。