当前位置: 代码迷 >> 综合 >> 整理MSDN中的SqlConnection.ConnectionString 属性
  详细解决方案

整理MSDN中的SqlConnection.ConnectionString 属性

热度:55   发布时间:2024-01-19 23:53:08.0

MSDN中文版中,阿很多不该翻译的翻译了,或者翻译的有问题。我在参阅英文版MSDN和中文版MSDN基础上,跟据自己的经验,把数据库连接字符串整理了一下,具体如下:

英文版可以看以下地址:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlConnectionClassConnectionStringTopic.asp

SqlConnection.ConnectionString 属性

ConnectionString 类似于 OLE DB 连接字符串,但并不相同。与 OLE DB 或 ADO 不同,如果“Persist Security Info ”值设置为 false(默认值),则返回的连接字符串与用户设置的 ConnectionString 相同但去除了安全信息。除非将“Persist Security Info ”设置为 true,否则,SQL Server .NET Framework 数据提供程序将不会保持,也不会返回连接字符串中的密码。

可以使用 ConnectionString 属性连接到数据库。下面的示例阐释了一个典型的连接字符串。

"Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer"

 

只有在连接关闭时才能设置 ConnectionString 属性。许多连接字符串值都具有相应的只读属性。当设置连接字符串时,将更新所有这些属性(除非检测到错误)。检测到错误时,不会更新任何属性。SqlConnection 属性只返回那些包含在 ConnectionString 中的设置。

若要连接到本地机器,请将服务器指定为“(local)”。(必须始终指定一个服务器。)

重置已关闭连接上的 ConnectionString 会重置包括密码在内的所有连接字符串值(和相关属性)。例如,如果设置一个连接字符串,其中包含“Database= northwind”,然后再将该连接字符串重置为“Data Source=myserver;Integrated Security=SSPI”,则 Database 属性将不再设置为 Northwind。

在设置后会立即分析连接字符串。如果在分析时发现语法中有错误,则产生运行库异常,如 ArgumentException。只有当试图打开连接时,才会发现其他错误。

连接字符串的基本格式包括一系列由分号分隔的关键字/值对。等号 (=) 连接各个关键字及其值。若要包括含有分号、单引号字符或双引号字符的值,则该值必须用双引号括起来。如果该值同时包含分号和双引号字符,则该值可以用单引号括起来。如果该值以双引号字符开始,则还可以使用单引号。相反地,如果该值以单引号开始,则可以使用双引号。如果该值同时包含单引号和双引号字符,则用于将值括起来的引号字符每次出现时,都必须成对出现。

若要在字符串值中包括前导或尾随空格,则该值必须用单引号或双引号括起来。即使将整数、布尔值或枚举值用引号括起来,其周围的任何前导或尾随空格也将被忽略。然而,保留字符串关键字或值内的空格。使用 .NET Framework 1.1 版时,在连接字符串中可以使用单引号或双引号而不用使用分隔符(例如,Data Source= my'Server 或 Data Source= my"Server),但引号字符不可以为值的第一个或最后一个字符。

若要在关键字或值中包括等号 (=),则它之前必须还有另一个等号。例如,在假设的连接字符串中,

"key==word=value"

 

关键字是“key=word”并且值是“value”。

如果“keyword= value”对中的一个特定关键字多次出现在连接字符串中,则将所列出的最后一个用于值集。

关键字不区分大小写。

下表列出了 ConnectionString 中的关键字值的有效名称。

名称 默认值 说明
Application Name   应用程序的名称,如果不提供应用程序名称,默认是:“.Net SqlClient Data Provider”
AttachDBFilename
- 或 -
extended properties
- 或 -
Initial File Name
  可连接数据库的主文件的名称,包括完整的路径名。

必须使用关键字“database”来指定数据库的名称。

Connect Timeout
- 或 -
Connection Timeout

15 在终止尝试连接并产生错误之前,等待与服务器的连接的时间长度(以秒为单位)。
Current Language   SQL Server 语言

Data Source
- 或 -
Server
- 或 -
Address
- 或 -
Addr
- 或 -
Network Address

  要连接的 SQL Server 实例的名称或网络地址。
Encrypt 'false' 当该值为 true 时,如果服务器端安装了证书,则 SQL Server 将对所有在客户端和服务器之间传送的数据使用 SSL 加密。可识别的值为 truefalseyesno

Initial Catalog
- 或 -
Database

  数据库的名称。

Integrated Security
- 或 -
Trusted_Connection

'false' 当为 false 时,将在连接中指定用户 ID 和密码。当为 true 时,将使用当前的 Windows 帐户凭据进行身份验证。

可识别的值为 truefalseyesno 以及与 true 等效的 sspi(强烈推荐)。

Network Library
- 或 -
Net

'dbmssocn' 用于建立与 SQL Server 实例的连接的网络库。支持的值包括 dbnmpntw(命名管道)、dbmsrpcn(多协议)、dbmsadsn (Apple Talk)、dbmsgnet (VIA)、dbmslpcn(共享内存)及 dbmsspxn (IPX/SPX) 和 dbmssocn (TCP/IP)。

相应的网络 DLL 必须安装在要连接的系统上。如果不指定网络而使用一个本地服务器(比如“.”或“(local)”),则使用共享内存。

Packet Size 8192 用来与 SQL Server 的实例进行通讯的网络数据包的大小,以字节为单位。

Password
- 或 -
Pwd

  SQL Server 帐户登录的密码(建议不要使用。为了维护最高级别的安全性,强烈建议改用 Integrated Security 或 Trusted_Connection 关键字)。
Persist Security Info 'false' 当该值设置为 falseno(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为 truefalseyesno
User ID   SQL Server 登录帐户(建议不要使用。为了维护最高级别的安全性,强烈建议改用 Integrated Security 或 Trusted_Connection 关键字)。
Workstation ID 本地计算机名称 连接到 SQL Server 的工作站的名称。

下表列出了 ConnectionString 内连接池值的有效名称。有关连接池的更多信息,请参见 SQL Server .NET Framework 数据提供程序连接池。

名称 默认值 说明
Connection Lifetime 0 当连接被返回到池时,将其创建时间与当前时间作比较,如果时间长度(以秒为单位)超出了由 Connection Lifetime 指定的值,该连接就会被销毁。这在聚集配置中很有用(用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡)。

零 (0) 值将使池连接具有最大的连接超时。

Connection Reset 'true' 确定从池中提取数据库连接时是否重置数据库连接。对于 Microsoft SQL Server 7.0 版,设置为 false 可避免获取连接时再有一次额外的服务器往返行程,但须注意此时并未重置连接状态(如数据库上下文)。
Enlist 'true' 当该值为 true 时,池程序在创建线程的当前事务上下文中自动登记连接。可识别的值为 truefalseyesno
Max Pool Size 100 池中允许的最大连接数。
Min Pool Size 0 池中允许的最小连接数。
Pooling 'true' 当该值为 true 时,系统将从相应池中提取 SQLConnection 对象,或在必要时创建该对象并将其添加到相应池中。可识别的值为 truefalseyesno

当设置需要布尔值的关键字或连接池值时,您可以使用 'yes' 代替 'true','no' 代替 'false'。整数值表示为字符串。

注意   SQL Server .NET Framework 数据提供程序使用它自己的协议与 SQL Server 进行通信。因此,当连接到 SQL Server 时,它不支持 ODBC 数据源名称 (DSN) 的使用,因为它不添加 ODBC 层。 警告   在此版本中,在应用程序中根据用户输入构造连接字符串时(例如,从对话框中检索用户 ID 和密码信息并将其追加到连接字符串时)应相当谨慎。应用程序应确保用户无法在这些值中嵌入额外的连接字符串参数(例如,输入“validpassword;database=somedb”作为密码,以试图连接到其他数据库)。

示例

下面的示例创建一个 SqlConnection并设置它的一些属性。

 
Public Sub CreateSqlConnection()
Dim myConnection As New SqlConnection()
myConnection.ConnectionString = 
"Persist Security Info=False;Integrated Security=SSPI;
database=northwind;server=mySQLServer;Connect Timeout=30" myConnection.Open() End Sub 'CreateSqlConnection

 

 
public void CreateSqlConnection() 
{
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = 
"Persist Security Info=False;Integrated Security=SSPI;
database=northwind;server=mySQLServer;Connect Timeout=30"; myConnection.Open(); }

反馈

# 回复: 整理MSDN中的SqlConnection.ConnectionString 属性

2004-5-5 15:51 by Kenway
请问是什么原因:
我的代码如下:
void Page_Load(Object r,EventArgs s)
{
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=Test;server=Silverbase;Connect Timeout=30";
myConnection.Open();
SqlDataAdapter MyAdapter=new SqlDataAdapter("select * from ss",myConnection);
DataSet ds=new DataSet();
MyAdapter.Fill(ds,"ss");
New.DataSource=ds.Tables["ss"].DefaultView;
New.DataBind();
}

为什么编译出错是:用户 'NT AUTHORITY/NETWORK SERVICE' 登录失败

# re: 整理MSDN中的SqlConnection.ConnectionString 属性

2004-8-19 10:30 by hpy223
你好,我请教一个与上面无关的问题,就是我想通过网站向手机发送短信,技术上怎么实现,我用C#,麻烦您,给与回复!谢谢!

# re: 整理MSDN中的SqlConnection.ConnectionString 属性

2005-12-23 9:26 by sw
Integrated Security=SSPI
这个句子有问题,它的前提是你有SERVER也有同样的用户存在才行,用户 'NT AUTHORITY/NETWORK SERVICE' 登录失败 ====说明没有这个用户

# re: 整理MSDN中的SqlConnection.ConnectionString 属性

2006-6-5 17:37 by happylabor
当连接sql server使用信任连接时就会出这个错误,在Windows XP当中,ASP.NET的运行帐号是ASPNET,而在Windows server 2003当中,运行帐号则改为了Network Service,直接把这个用户加到sql server的登陆帐号里面就好了,这样很多例子就不用去改连接字符串了!
第一步:把'NT AUTHORITY/NETWORK SERVICE' 添加到Administrator组中

? 右键单击“我的电脑”
? 管理
? 本地用户和组
? 选择“组”
? 双击Administrators
? 单击“添加”
? 单击“高级”
? 单击“立即查找”
? 在下面的列表中选择Network Service用户
? 两次单击“确定”。
第二步 在企业管理器中加入NetWord Service用户
打开Sql Server企业管理器
? 选择数据库实例
? 打开“安全性”节点
? 选择“登录”
? 在右边的列表中单击右键
? 选择“新建登录”
? 在“常规”选项卡中单击“名称”旁边的按钮“...”
? 选择“Administrators”组
? 单击下面的“成员”按钮
? 选择“Network Service”
? 单击“添加”按钮
? 单击“确定”,返回“新建登录”对话框
? 保证身份验证类型为“windows验证”和“允许访问”
? 选择“数据库访问”选项卡
? 选中允许该用户访问的数据库名称(可能是多个)
? 在“数据库角色允许”框中,选中“db_owner”
? 单击“确定”
? 关闭“企业管理器”
  相关解决方案