Sql Server 连接池及其用法
其实我们一直在使用SqlServer的连接池。在连接字符串中,Pooling为是否启用连接池,默认值为true,表示启用。
与连接池相关的两个重要参数是 Min Pool Size和 Max Pool Size ,分别是池中的最小连接数和池中的最大连接数,默认值分别是0和100。
在我们创建一个连接的实例,并调用Open()方法时,连接池管理程序会在连接池中找到一个可用的连接;当调用Close()方法时,连接池管理程序又将连接返回到连接池中,以供下一次调用Open()方法时使用。
另外,连接字符串中的 Connection Lifetime 为连接池中的连接设置了生命周期。它的默认值为0。当连接被返回到池时,将其创建时间与当前时间作比较,如果时间长度(以秒为单位)超出了由 Connection Lifetime 指定的值,该连接就会被销毁。 这在聚集配置中很有用(用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡)。零(0)值将使连接池具有最大的连接超时。
通过上面的了解,我们可以看出,即使是最简单的连接字符串,也在使用连接池。
----------------------------------------------------------------------------------------------
ps. 连接字符串关键字的意义:
|
关键字 |
默认值 |
说明 |
|---|---|---|
|
Application Name |
不可用 |
应用程序的名称,或者“.Net SqlClient Data Provider”(如果不提供应用程序名称)。 |
|
Async |
'false' |
如果设置为 true,则启用异步操作支持。 可识别的值为 true、 false、 yes 和 no。 |
|
AttachDBFilename - 或 - extended properties - 或 - Initial File Name |
不可用 |
主数据库文件的名称,包括可连接数据库的完整路径名。只有具有 .mdf 扩展名的主数据文件才支持 AttachDBFilename。 如果主数据文件为只读,则附加操作将失败。 该路经可以是绝对路径,也可以是相对路径,这取决于是否使用 DataDirectory 替换字符串。如果使用 DataDirectory,则对应的数据库文件必须存在于替换字符串指向的目录的子目录中。 远程服务器、HTTP 及 UNC 路径名不受支持。
必须按照如下方式使用关键字“database”(或其别名之一)指定数据库名称: "AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase" 如果数据文件所在的目录中存在日志文件,并且在附加主数据文件时使用了“database”关键字,则会生成错误。这种情况下,请移除日志文件。附加了数据库后,系统将根据物理路径自动生成一个新的日志文件。 |
|
Connect Timeout - 或 - Connection Timeout |
15 |
在终止尝试并产生错误之前,等待与服务器的连接的时间长度(以秒为单位)。 |
|
Context Connection |
'false' |
如果应对 SQL Server 进行进程内连接,则为 true。 |
|
Current Language |
不可用 |
SQL Server 语言记录名称。 |
|
数据源 - 或 - 服务器 - 或 - 地址 - 或 - Addr - 或 - Network Address |
不可用 |
要连接的 SQL Server 实例的名称或网络地址。可以在服务器名称之后指定端口号: server=tcp:servername, portnumber 指定本地实例时,始终使用 (local)。若要强制使用某个协议,请添加下列前缀之一: np:(local), tcp:(local), lpc:(local) ADO.NET 2.0 不支持在 SQL Server 2000 或更低版本的共享内存上执行异步命令。但是,可以强制用 TCP 代替共享内存,方法是:向连接字符串中的服务器名称添加“tcp:”前缀,或者使用“本地主机”。
|
|
Encrypt |
'false' |
当该值为 true 时,如果服务器端安装了证书,则 SQL Server 将对所有在客户端和服务器之间传送的数据使用 SSL 加密。 可识别的值为 true、 false、 yes 和 no。 |
|
Enlist |
'true' |
true 表明 SQL Server 连接池程序在创建线程的当前事务上下文中自动登记连接。 |
|
Failover Partner |
不可用 |
在其中配置数据库镜像的故障转移合作伙伴服务器的名称。 .NET Framework 1.0 或 1.1 版不支持 Failover Partner 关键字。 |
|
Initial Catalog - 或 - 数据库 |
不可用 |
数据库的名称。 |
|
Integrated Security - 或 - Trusted_Connection |
'false' |
当为 false 时,将在连接中指定用户 ID 和密码。 当为 true 时,将使用当前的 Windows 帐户凭据进行身份验证。 可识别的值为 true、 false、 yes、 no 以及与 true 等效的 sspi(强烈推荐)。 如果指定了用户 ID 和密码,且集成安全性设置为 true,则用户 ID 和密码将被忽略,并使用集成安全性。 |
|
MultipleActiveResultSets |
'false' |
如果为 true,则应用程序可以维护多活动结果集 (MARS)。 如果为 false,则应用程序必须在执行该连接上的任何其他批处理之前处理或取消一个批处理中的多个结果集。 可识别的值为 true 和 false。 .NET Framework 1.0 或 1.1 版不支持该关键字。 |
|
Network Library - 或 - Net |
'dbmssocn' |
用于建立与 SQL Server 实例的连接的网络库。支持的值包括: dbnmpntw(命名管道) dbmsrpcn(多协议,Windows RPC) dbmsadsn (Apple Talk) dbmsgnet (VIA) dbmslpcn(共享内存) dbmsspxn (IPX/SPX) dbmssocn (TCP/IP) Dbmsvinn (Banyan Vines) 相应的网络 DLL 必须安装在要连接的系统上。如果您不指定网络,且使用本地服务器(例如“.”或 "(本地)"),使用共享内存。在此示例中,网络库为 Win32 Winsock TCP/IP (dbmssocn),使用的端口为 1433。 Network Library=dbmssocn;Data Source=000.000.000.000,1433; Network Library=dbmssocn;Data Source=000.000.000.000,1433; |
|
Packet Size |
8192 |
用来与 SQL Server 的实例进行通信的网络数据包的大小,以字节为单位。 |
|
Password - 或 - Pwd |
不可用 |
SQL Server 帐户登录的密码。建议不要使用。为保持高安全级别,我们强烈建议您使用 Integrated Security 或Trusted_Connection 关键字。 |
|
Persist Security Info |
'false' |
当该值设置为 false 或 no(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。 重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为 true、 false、 yes 和no。 |
|
计划 |
不可用 |
指定连接计划。如果以下项也在连接字符串中指定,则将引发 ArgumentException:failover partner、AttachDbFileName、UserInstance=true 或 contextConnection=true。 |
|
复制 |
'false' |
如果使用连接来支持复制,则为 true。 |
|
Transaction Binding |
Implicit Unbind |
控制与登记的 System.Transactions 事务关联的连接。 可能的值包括: Transaction Binding=Implicit Unbind; Transaction Binding=Explicit Unbind; Implicit Unbind 可使连接在事务结束时从事务中分离。分离后,连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时,不会检查 System.Transactions.Transaction.Current 属性。 事务结束后,其他请求将以自动提交模式执行。 Explicit Unbind 可使连接保持连接到事务,直到连接关闭或调用显式 SqlConnection.TransactionEnlist(null)。 如果Transaction.Current 不是登记的事务或登记的事务未处于活动状态,则引发 InvalidOperationException。 |
|
TrustServerCertificate |
'false' |
如果设置为 true,则使用 SSL 对通道进行加密,但不通过证书链对可信度进行验证。 如果将 TrustServerCertificate 设置为 true 并将 Encrypt 设置为 false,则不对通道进行加密。 可识别的值为 true、 false、 yes 和 no。 有关更多信息,请参见 连接字符串语法 (ADO.NET)。 |
|
Type System Version |
不可用 |
指示应用程序期望的类型系统的字符串值。可能的值包括: Type System Version=SQL Server 2000; Type System Version=SQL Server 2005; Type System Version=SQL Server 2008; Type System Version=Latest; 如果设置为 SQL Server 2000,将使用 SQL Server 2000 类型系统。 与 SQL Server 2005 实例连接时,执行下列转换: XML to NTEXT UDT to VARBINARY VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分别与 TEXT、NEXT 和 IMAGE。 如果设置为 SQL Server 2005,将使用 SQL Server 2005 类型系统。 对 ADO.NET 的当前版本不进行任何转换。 如果设置为 Latest,将使用此客户端-服务器对无法处理的最新版本。 这个最新版本将随着客户端和服务器组件的升级自动更新。 |
|
用户 ID |
不可用 |
SQL Server 登录帐户。建议不要使用。为保持高安全级别,我们强烈建议您使用 Integrated Security 或Trusted_Connection 关键字。 |
|
User Instance |
'false' |
一个值,用于指示是否将连接从默认的 SQL Server Express 实例重定向到调用方帐户下运行的运行时启动的实例。 |
|
Workstation ID |
本地计算机名称 |
连接到 SQL Server 的工作站的名称。 |
下表列出了 ConnectionString 内连接池值的有效名称。 有关更多信息,请参见 SQL Server 连接池 (ADO.NET)。
|
关键字 |
默认值 |
说明 |
|---|---|---|
|
Connection Lifetime |
0 |
当连接被返回到池时,将其创建时间与当前时间作比较,如果时间长度(以秒为单位)超出了由 Connection Lifetime 指定的值,该连接就会被销毁。 这在聚集配置中很有用(用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡)。 零 (0) 值将使池连接具有最大的连接超时。 |
|
Enlist |
'true' |
当该值为 true 时,池程序在创建线程的当前事务上下文中自动登记连接。 可识别的值为 true、 false、 yes 和 no。 |
|
Load Balance Timeout |
0 |
连接被销毁前在连接池中生存的最短时间(以秒为单位)。 |
|
Max Pool Size |
100 |
池中允许的最大连接数。 |
|
Min Pool Size |
0 |
池中允许的最小连接数。 |
|
Pooling |
'true' |
当该值为 true 时,系统将从适当的池中提取 SQLConnection 对象,或在需要时创建该对象并将其添加到适当的池中。 可识别的值为 true、 false、 yes 和 no。 |
当设置需要布尔值的关键字或连接池值时,您可以使用“yes”代替“true”,用“no”代替“false”。整数值表示为字符串。
Sql Server 连接池及其用法的更多相关文章
- Sql Server 连接池
在看缓存的一篇文章中,看到连接池的三个字,来充充电. 原文连接 这篇讲了关键字 其实我们一直在使用SqlServer的连接池.在连接字符串中,Pooling为是否启用连接池,默认值为true,表示启用 ...
- SQL Server 连接池 (ADO.NET) MSDN
连接到数据库服务器通常由几个需要很长时间的步骤组成. 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前 ...
- SQL SERVER连接池
Connection Pool 是什么呢 ?每当程序需要读写数据库的时候.Connection.Open()会使用ConnectionString连接到数据库,数据库会为程序建立 一个连接,并且保持打 ...
- 重置SQL Server连接池
EXEC sp_configure 'show advanced options', 1 GO -- To update the currently configured value for adva ...
- ADO.NET中SQL Server数据库连接池
连接到数据库服务器通常由几个需要很长时间的步骤组成. 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前 ...
- 通过sql server 连接mysql
图文:通过sql server 连接mysql 1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/con ...
- [ASP.NET]SQL Server 连接字符串和身份验证
SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开. PropertyName1=Value1; Property ...
- SQL Server 连接字符串和身份验证详解
SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开. PropertyName1=Value1; ...
- SQL Server 连接字符串和身份验证
SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开. PropertyName1=Value1;P ...
随机推荐
- js限制textarea文本框的文字个数
现在发微博,那个文本框一般只能输入200字好像,再多就会自动删除,要么是提示字数受限,用Js就可实现本功能.今天带来的这个Js限制表单文本 框文字数量的例子,相信有此方面需要的是个不错的参考.为了便于 ...
- Symfony2 EventDispatcher组件
一个插件系统中,A插件在不影响其它插件的前提下,添加新的方法,或者在一个方法运行前做一些准备工作,通过继承来实现扩展是很不容易的,由于插件之间的关联关系,A插件的改变也会使得关联的插件 ...
- 全排列算法之Perm算法实现
题目描述: 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列. 我们假设对于小写字母有'a' < 'b' < … < 'y' < 'z',而且给定的字符 ...
- css中响应式布局中样式的代码书写方法
代码示例:@media only screen and (min-width: 320px){ html { font-size: 8px !important; } .mulu-zi{ positi ...
- NSSet和NSMutableSet 确保数据的唯一性--备
NSSet和NSMutableSet是无序的, 但是它保证数据的唯一性.当插入相同的数据时,不会有任何效果.从内部实现来说是hash表,所以可以常数时间内查找一个数据. 1.NSSet的使用 [NSS ...
- 一个正整数N,拆成任意个正整数之和,怎样使这些数的乘积最大
网上看到了如标题所示的题目,就开始想如果用程序来算的话,那么它的算法是怎样的. 自己想了半天,第一感觉要用递归, 如先算出 当 n=1 max=1 当 n=2 max=1 当 n=3 max=2 .. ...
- [51单片机]18B20驱动函数
/**********DS18B20.h**********/ #include "REG52.H" #include "INTRINS.H" sbit DQ ...
- PHP 访问类中的静态属性
静态属性和普通属性不一样,静态属性只属于类本身而不属于类的任何实例,所以他们的访问方式也不一样.你可以把静态属性认为是存储在类当中的全局变量,而且你可以在任何地方通过类来访问它们. 在类本身中访问静态 ...
- Altium Designer 里面怎么画等长线
(1)一般是将走线布完后,新建一个class. Design -> Classes 如上图添加完后可以点击close. (2)快捷键 T + R: 或者 点击Tools 下拉中的Interact ...
- Java批量处理数据
要求:共1000条数据,第一次批量插入100条,第二次批量插入101到200条,依次插入数据: 实现方式这里选择了两种常用的方式,都是使用List操作: 第一种实现思路如下: <1> 原先 ...