Sql Server 连接池及其用法-阿里云开发者社区

开发者社区> 老朱教授> 正文

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”。整数值表示为字符串。




本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2011/06/18/2084442.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
WINDOWS 2008 64BIT SQLSERVER 连接ORACLE问题
操作系统 WINDOWS SERVER 2008 64 BIT 数据库是 SQL SERVER 2005 SP3 64BIT   问题: 我现在要连接我的ORACLE 10G数据库进行数据抓取。
721 0
C# Oracle、Sql Server连接(增、删、改、查)
1、连接oracle,并可以将数据库的数据显示在 gridControl上 private void Btn_XS_Click(object sender, EventArgs e) { //写连接串 //ntegrated Security 身份验证方式 //当为false时,将在连接中指定用
1096 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
11652 0
SQL Server 连接问题-TCP/IP
原文: SQL Server 连接问题-TCP/IP 出自:http://blogs.msdn.com/b/apgcdsd/archive/2012/02/24/ms-sql-server-tcp-ip.aspx TCP/IP的基本工作原理这里就不浪费口水了。
1419 0
SQL Server 连接问题-命名管道
原文: SQL Server 连接问题-命名管道 出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/12/sql-server-1.aspx 一。
1476 0
C# Sql Server连接(增、删、改、查)
        //增加、删除、更新、查询公用        string MyConn = "server=127.0.0.1;uid=数据库登录名;pwd=密码;database=数据库的名字;Trusted_Connection=no"; SqlConnection MyConnection = new SqlConnection(MyConn); 1、增加
1455 0
+关注
3546
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载