在做数据开发的时候,常常需要用到数据库连接字符串,很多时候都不知道连接字符串中每个字段的具体含义,今天就在这里总结一下,方便以后使用。下面就用一个简单的例子开始
Data Source=(local); Database=WebDB; User ID=WebUser; Password=WebUser; pooling=true; min pool size=5; max pool size=512; connect timeout = 20;Integrated Security=SSPI
我们发现这个字符串中都是一个“”属性名=值“”和“;”构成的。在该字符串中必须包含的字段就是数据库的实例名称:
1.Data Source=Server Name.在该字符串中必须包含的字段就是数据库的实例名称.如果是使用本地的数据库,可以为localhost或者是".",如果想要使用远程的数据库服务器,就要把正确的服务器给到Data Source属性。在使用远程数据库服务器的时候需要制定身份验证方式:windows 和SQL Server身份验证。
2.DataBase=DBName。指定连接到的数据源,
3.User ID=UserName; Password=WebUser。数据库所属的登录名和密码,如果在选择身份验证为SQL Server的时候,该项必须要。
4.pooling=true。 确定是否使用连接池。如果值为真的话,连接就要从适当的连接池中获得,或者,如果需要的话,连接将被创建,然后被加入合适的连接池中。其缺省值为真。
5.min pool size=5; max pool size=512 。连接池允许的连接数的最小值,其缺省值为0。连接池允许的连接数的最大值,其缺省值为100。
6.connect timeout = value。以秒为单位,一个连接到数据库服务器在connection timeout之前必须连上服务器,否则就退出。
7.身份验证。身份验证支持两种模式window和Sql Server,如果要使用windows验证模式需要将Integrated Security的值设置为SSPI。SSPI是Security Support Provider Interface的首字母简写(安全性支持提供者接口)。在所有的window NT操作系统上都支持,是使用windows身份验证可以使用的唯一接口,当把Integrated Security=SSPI等效于Integrated Security=true。如果使用了window验证,上面的user ID和Password都不起效果了。
如果要使用SQL Server验证模式,需要将Integrated Security=false。Integrated Security的值默认也是为false,所以也可以不加该字段。
关键字 |
默认值 |
说明 | ||||
---|---|---|---|---|---|---|
应用程序名称 |
N/A |
应用程序的名称,或者“.Net SqlClient Data Provider”(如果不提供应用程序名称)。 |
||||
Async |
'false' |
如果设置为 true,则启用异步操作支持。可识别的值为 true、false、yes 和 no。 |
||||
AttachDBFilename - 或 - extended properties - 或 - Initial File Name |
N/A |
主数据库文件的名称,包括可连接数据库的完整路径名。只有具有 .mdf 扩展名的主数据文件才支持 AttachDBFilename。 如果主数据文件为只读,则附加操作将失败。 该路经可以是绝对路径,也可以是相对路径,这取决于是否使用 DataDirectory 替换字符串。如果使用 DataDirectory,则对应的数据库文件必须存在于替换字符串指向的目录的子目录中。
必须按照如下方式使用关键字“database”(或其别名之一)指定数据库名称: "AttachDbFileName=|DataDirectory|dataYourDB.mdf;integrated security=true;database=YourDatabase" 如果数据文件所在的目录中存在日志文件,并且在附加主数据文件时使用了“database”关键字,则会生成错误。这种情况下,请移除日志文件。附加了数据库后,系统将根据物理路径自动生成一个新的日志文件。 |
||||
Connect Timeout - 或 - Connection Timeout |
15 |
在终止尝试并产生错误之前,等待与服务器的连接的时间长度(以秒为单位)。 |
||||
Context Connection |
'false' |
如果应对 SQL Server 进行进程内连接,则为 true。 |
||||
Current Language |
N/A |
SQL Server 语言记录名称。 |
||||
Data Source - 或 - Server - 或 - Address - 或 - Addr - 或 - Network Address |
N/A |
要连接的 SQL Server 实例的名称或网络地址。可以在服务器名称之后指定端口号: server=tcp:servername, portnumber 指定本地实例时,始终使用 (local)。若要强制使用某个协议,请添加下列前缀之一: np:(local), tcp:(local), lpc:(local)
|
||||
Encrypt |
'false' |
当该值为 true 时,如果服务器端安装了证书,则 SQL Server 将对所有在客户端和服务器之间传送的数据使用 SSL 加密。可识别的值为 true、false、yes 和 no。 |
||||
Enlist |
'false' |
true 表明 SQL Server 连接池程序在创建线程的当前事务上下文中自动登记连接。 |
||||
Failover Partner |
N/A |
在其中配置数据库镜像的故障转移合作伙伴服务器的名称。 .NET Framework 1.0 或 1.1 版不支持 Failover Partner 关键字。 |
||||
Initial Catalog - 或 - Database |
N/A |
数据库的名称。 |
||||
Integrated Security - 或 - Trusted_Connection |
'false' |
当为 false 时,将在连接中指定用户 ID 和密码。当为 true 时,将使用当前的 Windows 帐户凭据进行身份验证。 可识别的值为 true、false、yes、no 以及与 true 等效的 sspi(强烈推荐)。 |
||||
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 必须安装在要连接的系统上。如果不指定网络而使用一个本地服务器(比如“.”或“(local)”),则使用共享内存。在此示例中,网络库为 Win32 Winsock TCP/IP (dbmssocn),使用的端口为 1433。
|
||||
Packet Size |
8192 |
用来与 SQL Server 的实例进行通信的网络数据包的大小,以字节为单位。 |
||||
Password - 或 - Pwd |
N/A |
SQL Server 帐户登录的密码。建议不要使用。为保持高安全级别,我们强烈建议您使用 Integrated Security 或 Trusted_Connection 关键字。 |
||||
Persist Security Info |
'false' |
当该值设置为 false 或 no(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为 true、false、yes 和 no。 |
||||
Replication |
'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 |
N/A |
指示应用程序期望的类型系统的字符串值。可能的值包括: 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 到 NTEXT UDT 到 VARBINARY VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分别到 TEXT、NEXT 和 IMAGE。 如果设置为 SQL Server 2005,将使用 SQL Server 2005 类型系统。对 ADO.NET 的当前版本不进行任何转换。 如果设置为 Latest,将使用此客户端-服务器对无法处理的最新版本。这个最新版本将随着客户端和服务器组件的升级自动更新。 |
||||
User ID |
N/A |
SQL Server 登录帐户。建议不要使用。为保持高安全级别,我们强烈建议您使用 Integrated Security 或 Trusted_Connection 关键字。 |
||||
User Instance |
'false' |
一个值,用于指示是否将连接从默认的 SQL Server 速成版实例重定向到调用方帐户下运行的运行时启动的实例。 |
||||
Workstation ID |
本地计算机名称 |
连接到 SQL Server 的工作站的名称。 |
下表列出了 ConnectionString 内连接池值的有效名称。For more information, see 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。 |