Ownsight

?找回密码
?立即注册
搜索
热搜: 活动 交友 discuz
查看: 1197|回复: 0
打印 上一主题 下一主题

c# SqlConnection.ConnectionString 属性

[复制链接]

803

主题

903

帖子

3201

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3201
跳转到指定楼层
楼主
发表于 2017-7-5 11:08:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转自:https://msdn.microsoft.com/zh-cn ... on.connectionstring(v=vs.110).aspxSqlConnection.ConnectionString 属性.NET Framework (current version)

[size=1em][url=]其他版本[/url]





发布日期: 2016年7月

获取或设置用于打开 SQL Server 数据库的字符串。


命名空间: ??System.Data.SqlClient
程序集: System.Data(位于 System.Data.dll)

[url=]语法[/url]


[url=]C#[/url]
C++
F#
VB



[SettingsBindableAttribute(true)]public override string ConnectionString { get; set; }


属性值Type: System.String

连接字符串,其中包含源数据库名称和建立初始连接所需的其他参数。 默认值为一个空字符串。


实现IDbConnection.ConnectionString


[url=]异常[/url]


ExceptionCondition
ArgumentException

提供了一个无效的连接字符串参数,或者未提供所需的连接字符串参数。





[url=]备注[/url]


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

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




"Persist Security Info=False;Integrated Security=true;Initial Catalog=Northwind;server=(local)"


使用新SqlConnectionStringBuilder可以在运行时构造有效的连接字符串。 有关详细信息,请参阅连接字符串生成器

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

若要连接到本地计算机,指定"(local)"的服务器。 如果未指定服务器名称,将尝试连接到本地计算机上的默认实例。

重置ConnectionString关闭的连接将重置所有连接字符串值 (和相关的属性) 包括密码。 例如,如果你设置的连接字符串,包括"数据库 = AdventureWorks",然后重置的连接字符串"数据源 = myserver; 集成的安全性 = true",则Database属性不能再设置为"AdventureWorks"。

在设置之后立即分析连接字符串。 如果在分析时,运行时异常,如发现语法中的错误ArgumentException,生成。 仅当尝试打开连接时,可以找到其他错误。

连接字符串的基本格式包含一系列的用分号分隔的关键字/值对。 每个关键字和它的值之间用等号 (=) 连接。 若要包含的值包含分号、 单引号字符或双引号字符,则该值必须括在双引号内。 如果值包含分号和双引号字符,则该值可以括在单引号中。 单引号也是有用的值以双引号字符开头。 相反,如果值以单引号开头,则可以使用双引号。 如果值包含单引号和双引号字符,每次它的值中发生时,用于将值括起来的引号字符必须采用双重方括号。

若要包含前导或尾随空格的字符串值,则该值必须括在单引号或双引号中。 忽略任何前导空格或尾随空格围绕整数、 布尔值或枚举的值,即使用引号引起来。 但是,将保留在字符串文字关键字或值中的空间。 而不使用分隔符,可能在连接字符串中使用单引号或双引号引号 (例如,数据源 = my'Server 或数据源 = 我的"服务器),除非引号字符的值中的第一个或最后一个字符。

关键字不区分大小写。

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

关键字

默认

描述

Addr

不可用

同义词数据源

Address

不可用

同义词数据源

应用

不可用

同义词应用程序名称

Application Name

不可用

应用程序或.NET SQLClient Data Provider 如果未不提供任何应用程序名称的名称。

应用程序名称可以是 128 个字符或更少。

ApplicationIntent

ReadWrite

连接到服务器时声明应用程序工作负荷类型。 可能的值为 ReadOnlyReadWrite。 例如:




ApplicationIntent=ReadOnly



有关 AlwaysOn 可用性组的 SqlClient 支持的更多信息,请参见SqlClient 对高可用性的支持,灾难恢复

Asynchronous Processing

- 或 -

Async

' false'

true,支持异步操作。 已识别的值为 truefalseyesno

将忽略此属性从.NET Framework 4.5。 有关异步编程的 SqlClient 支持的详细信息,请参阅异步编程

AttachDBFilename

- 或 -

扩展属性

- 或 -

初始文件名

不可用

包括可附加数据库的完整路径名称的主数据库文件的名称。 主数据文件.mdf 扩展名为仅支持 AttachDBFilename。

如果 AttachDBFileName 键的值指定连接字符串中,数据库已连接,将成为连接的默认数据库。

如果未指定此密钥,并且以前附加该数据库,将不会重新附加数据库。 以前附加的数据库将用作连接的默认数据库。

如果与 AttachDBFileName 密钥一起指定了此密钥,此键的值将用作别名。 但是,如果另一个附加的数据库中已经使用的名称,则连接将失败。

路径可能是绝对或相对使用 DataDirectory 替代字符串。 如果使用 DataDirectory,数据库文件必须存在的替代字符串指向的目录的子目录中。

说明

远程服务器、 HTTP 和 UNC 路径名不支持。



必须使用关键字 'database' (或其别名之一) 指定数据库名称,如下所示︰

"AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase"

如果日志文件和数据文件存在于同一个目录中,并且在附加主数据文件时使用“database”关键字,则将生成错误。 在这种情况下,请移除日志文件。 附加数据库后,将基于物理路径自动生成一个新日志文件。

身份验证

不可用

用于身份验证方法Connecting to SQL Database By Using Azure Active Directory Authentication

有效值为:

Active Directory 集成,Active Directory 密码,Sql 密码。

列加密设置

不可用

启用或禁用Always Encrypted连接的功能。

连接超时

- 或 -

Connection Timeout

- 或 -

超时

15

终止尝试并产生错误之前等待连接到服务器的时间(以秒为单位)。

有效值为大于或等于 0 且小于或等于 2147483647。

打开到 Azure SQL 数据库连接时,设置为 30 秒的连接超时值。

连接生存期

- 或 -

Load Balance Timeout

0

连接返回到池中后,创建时间将与当前时间进行比较,如果时间跨度(秒)超过 Connection Lifetime 指定的值,该连接将被破坏。 在聚集配置中可以使用它来强制在运行服务器和刚联机的服务器之间达到负载平衡。

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

ConnectRetryCount

1

控件的重新连接尝试次数后客户端标识空闲连接失败。 有效值为 0 到 255。 默认值为 1。 0 表示不尝试重新连接 (禁用连接复原)。

有关空闲连接复原的其他信息,请参阅Technical Article – Idle Connection Resiliency

ConnectRetryInterval

10

指定每次连接重试 (ConnectRetryCount) 之间的时间。 有效值为 1 到 60 秒 (默认值 = 10),应用后第一次重新连接尝试。 当检测到断开的连接,则客户端立即尝试重新连接;这是第一次重新连接尝试,仅当 ConnectRetryCount 大于 0。 如果第一次重新连接尝试失败并且 ConnectRetryCount 大于 1,客户端将等待 ConnectRetryInterval 尝试第二个和后续的重新连接尝试。

有关空闲连接复原的其他信息,请参阅Technical Article – Idle Connection Resiliency

Context Connection

' false'

true如果一个进程内连接SQL Server应进行。

Current Language

- 或 -

语言

不可用

设置数据库服务器的警告或错误消息所使用的语言。

语言名称可以有 128 个字符或更少。

Data Source

- 或 -

服务器

- 或 -

Address

- 或 -

Addr

- 或 -

网络地址

不可用

实例的名称或网络地址SQL Server来进行连接。 服务器名称后,可以指定的端口号︰

server=tcp:servername, portnumber

在指定的本地实例时,始终使用 (local)。 若要强制使用某个协议,添加以下前缀之一︰

nplocal), tcplocal), lpclocal)

从.NET Framework 4.5,你还可以连接到 LocalDB 数据库,如下所示︰




server=(localdb)\\myInstance



有关 LocalDB 的更多信息,请参见SqlClient 对 LocalDB 的支持

数据源必须使用 TCP 格式或命名管道格式。

TCP 格式为,如下所示︰

  • tcp:\

  • tcp:,


必须以前缀开头的 TCP 格式"tcp:"后, 跟所指定的主机名和实例名称的数据库实例。 连接到 Azure SQL 数据库时,此格式不适用。 如果未不指定任何协议,自动选择将 TCP 连接到 Azure SQL 数据库的连接。

必须通过以下方式之一中指定的主机名︰

  • Netbios 名称

  • IPv4Address

  • IPv6Address


实例名称用于解析为特定的 TCP/IP 端口号在其承载的数据库实例。 或者,还允许直接指定 TCP/IP 端口号。如果两个实例名称和端口号不存在,则使用默认数据库实例。

命名管道格式如下所示︰

  • np: \\\pipe\


必须以前缀开头的命名管道格式"np:"后, 跟命名的管道名称。

必须通过以下方式之一中指定的主机名︰

  • Netbios 名称

  • IPv4Address

  • IPv6Address


管道名称用于标识.NET Framework 应用程序将连接到的数据库实例。

如果值网络指定密钥,前缀"tcp:"和"np:"不应指定。

说明

你可以强制使用 TCP 而不是共享内存,或者由前缀tcp:到服务器名称在连接字符串,或使用localhost



Encrypt

' false'

true,SQL Server如果服务器已安装的证书客户端和服务器之间发送的所有数据使用 SSL 加密。 已识别的值为 truefalseyesno 有关详细信息,请参阅连接字符串语法

从.NET Framework 4.5,当TrustServerCertificate为 false 和Encrypt是 true、 服务器名称 (或 IP 地址) 中SQL ServerSSL 证书必须与连接字符串中指定的服务器名称 (或 IP 地址) 完全匹配。 否则,连接尝试将失败。 有关其使用者启动带通配符 (*) 的证书支持的信息,请参阅Accepted wildcards used by server certificates for server authentication

Enlist

'true'

true指示SQL Server连接池程序自动登记创建线程的当前事务上下文中的连接。

Failover Partner

不可用

其中配置数据库镜像故障转移合作伙伴服务器的名称。

如果此键的值是"",然后初始目录必须存在,并且其值不得""。

服务器名称可以为 128 个字符或更少。

如果指定故障转移伙伴但故障转移伙伴服务器未配置为数据库镜像 (指定 Server 关键字) 的主服务器不可用,然后则连接将失败。

如果你指定故障转移伙伴,而在主服务器未配置为数据库镜像,与主服务器 (Server 关键字指定) 的连接将会成功,如果主服务器恢复可用。

Initial Catalog

- 或 -

数据库

不可用

数据库的名称。

数据库名称可以是 128 个字符或更少。

Integrated Security

- 或 -

Trusted_Connection

' false'

false,连接中指定用户 ID 和密码。 当true,当前的 Windows 帐户凭据用于身份验证。

可识别的值为truefalseyesno,和sspi(强烈建议),这等同于true

如果用户 ID 和密码是指定的集成安全性设置为 true,用户 ID 和密码将被忽略,并将使用集成安全性。

SqlCredential是更安全的方式指定凭据使用的连接SQL Server身份验证 (Integrated Security=false)。

Max Pool Size

100

最大允许在池中的连接数。

有效值为大于或等于 1。 值小于最小池大小生成错误。

Min Pool Size

0

最小允许在池中的连接数。

有效值为大于或等于 0。 此字段中的零 (0) 意味着最初打开任何最小连接。

值大于最大池大小生成错误。

MultipleActiveResultSets

' false'

true,应用程序可以维护多个活动结果集 (MARS)。 当false,应用程序必须处理或取消某一批中的所有结果集,才可以在该连接上执行任何其他批次。

可识别的值为truefalse

有关详细信息,请参阅Multiple Active Result Sets (MARS)

MultiSubnetFailover

FALSE

始终指定multiSubnetFailover=True时连接到可用性组侦听器的 SQL Server 2012 (或更高版本) 可用性组或 SQL Server 2012 (或更高版本) 故障转移群集实例。 multiSubnetFailover=True配置 SqlClient 以便更快地检测和到 (当前) 活动服务器的连接。 可能的值为YesNoTrueFalse10。 例如:




MultiSubnetFailover=True



默认值为 False 有关始终上承载个可用性组的 SqlClient 的支持的详细信息,请参阅SqlClient 对高可用性的支持,灾难恢复

Network Library

- 或 -

网络

- 或 -

Net

不可用

用于建立到的实例的连接的网络库SQL Server。 支持的值包括︰

dbnmpntw (命名管道)

dbmsrpcn (多协议、 Windows RPC)

dbmsadsn (Apple 讨论)

dbmsgnet (VIA)

dbmslpcn (共享内存)

dbmsspxn (IPX/SPX)

dbmssocn (TCP/IP)

Dbmsvinn (Banyan Vines)

必须在系统上安装您要连接到的相应网络 DLL。 如果未指定网络,并且使用本地服务器 (例如,"。"或"(local)"),使用共享的内存。 在此示例中,网络库是 Win32 Winsock TCP/IP (dbmssocn),1433 是使用的端口。




Network Library=dbmssocn;Data Source=000.000.000.000,1433;



Packet Size

8000

以字节为单位的用来与实例通信的网络数据包大小SQL Server。

数据包大小可能会大于或等于 512 且小于或等于 32768。

密码

- 或 -

PWD

不可用

密码SQL Server帐户登录。 不建议这样做。 若要维护高级别的安全性,我们强烈建议你使用Integrated SecurityTrusted_Connection关键字相反。 SqlCredential是更安全的方式指定凭据使用的连接SQL Server身份验证。

密码必须是 128 个字符或更少。

Persist Security Info

- 或 -

PersistSecurityInfo

' false'

当设置为falseno(强烈建议),如果连接是打开的或者一直处于打开状态不作为连接的一部分返回安全敏感信息,如密码。 重置连接字符串将所有连接字符串值,包括密码重都置。 已识别的值为 truefalseyesno

PoolBlockingPeriod

auto


设置连接池中的阻塞期行为。 有关详细信息,请参阅PoolBlockingPeriod 属性

Pooling

'true'

当此键的值设置为 true,新创建的所有连接将添加到池的应用程序关闭时。 在下一步尝试打开相同的连接,将从池中取出该连接。

如果它们具有相同的连接字符串,连接将视为相同。 不同连接具有不同的连接字符串。

此键的值可以是"true"、"false"、"是",或"否"。

Replication

' false'

true如果使用的连接来支持复制。

Transaction Binding

Implicit Unbind

控制连接与已登记的关联System.Transactions事务。

可能的值有:

Transaction Binding=Implicit Unbind;

Transaction Binding=Explicit Unbind;

隐式取消绑定,使连接与事务结束时分离。 分离后,在自动模式下对连接执行其他请求。 在事务处于活动状态的情况下,执行请求时不会检查 System.Transactions.Transaction.Current 属性。 事务结束后,会在自动模式下执行其他请求。

如果系统结束事务 (范围中的 using 块) 的最后一个命令完成之前,它会引发InvalidOperationException

连接保持附加到事务之前连接关闭或显式的显式取消绑定原因SqlConnection.TransactionEnlist(null)调用。 从.NET Framework 4,隐式取消绑定到的更改使显式取消绑定过时。 如果InvalidOperationException 不是登记事务或者登记事务未处于活动状态,则将引发Transaction.Current

TransparentNetworkIPResolution

请参阅描述。

当此键的值设置为true,应用程序是检索特定的 DNS 条目的所有 IP 地址和尝试列表中的第一个与连接所必需。 如果在 0.5 秒内未建立连接,应用程序将尝试连接到所有其他并行。 当第一个接听时,应用程序将建立与应答者的 IP 地址的连接。

如果MultiSubnetFailover键设置为trueTransparentNetworkIPResolution将被忽略。

如果Failover Partner设置注册表项,TransparentNetworkIPResolution将被忽略。

此键的值必须是truefalseyes,或no

值为yes是视为相同的值true

值为no是视为相同的值false

默认值如下所示︰

  • false当︰

    • 连接到 Azure SQL 数据库数据源的结尾︰

      • .database.chinacloudapi.cn

      • .database.usgovcloudapi.net

      • .database.cloudapi.de

      • .database.windows.net


    • AuthenticationActive Directory 密码或 Active Directory 集成


  • 在所有其他情况下,它表示 true


TrustServerCertificate

' false'

当设置为true,会使用 SSL 来加密通道时跳过遍历证书链来验证信任。 如果 TrustServerCertificate 设置为true和加密设置为false,未加密通道。 已识别的值为 truefalseyesno 有关详细信息,请参阅连接字符串语法

类型系统版本

不可用

一个字符串值,该值指示类型系统应用程序要求。 可用于客户端应用程序的功能所依赖的新版SQL Server和数据库的兼容性级别。 显式设置为已编写客户端应用程序的类型系统版本可避免潜在问题,可能会导致应用程序中断的不同版本时SQL Server使用。

说明

不能为 SQL Server 中在进程内执行的公共语言运行库 (CLR) 代码设置类型系统版本。 有关详细信息,请参阅SQL Server 公共语言运行库集成



可能的值有:

Type System Version=SQL Server 2012;

Type System Version=SQL Server 2008;

Type System Version=SQL Server 2005;

Type System Version=Latest;

Type System Version=SQL Server 2012;指定应用程序将需要版本 11.0.0.0 的 Microsoft.SqlServer.Types.dll。 其他Type System Version设置将需要版本 10.0.0.0 的 Microsoft.SqlServer.Types.dll。

Latest已过时,不应使用。 Latest 与 Type System Version=SQL Server 2008; 相等。

User ID

- 或 -

UID

- 或 -


不可用

SQL Server登录帐户。 不建议这样做。 若要维护高级别的安全性,我们强烈建议你使用Integrated SecurityTrusted_Connection关键字相反。 SqlCredential是更安全的方式指定凭据使用的连接SQL Server身份验证。

用户 ID 必须为 128 个字符或更少。

User Instance

' false'

一个值,该值指示是否将连接从默认的重定向SQL ServerExpress 到运行时启动的实例的调用方帐户下运行的实例。

Workstation ID

- 或 -

WSID

本地计算机的名称

连接到工作站的名称SQL Server。

ID 必须为 128 个字符或更少。


以下列表包含的连接池内的值的有效名称ConnectionString。 有关详细信息,请参阅SQL Server 连接池 (ADO.NET)

  • Connection Lifetime (或 Load Balance Timeout)

  • Enlist

  • Max Pool Size

  • Min Pool Size

  • Pooling


在设置关键字或连接池需要一个布尔值的值时,你可以是使用而不是 'true',和否而不是 'false'。 整数值表示为字符串。

说明

用于 .NET Framework 的 SQL Server 数据提供程序使用其自己的协议与 SQL Server 进行通信。 因此,它不支持使用 ODBC 数据源名称 (DSN) 的连接时到SQL Server因为它不会添加一个 ODBC 层。



说明

不支持通用数据链接 (UDL) 文件.NET Framework数据提供程序SQL Server。



小心

在此版本中,应用程序时应小心构造根据用户输入 (例如,从一个对话框,并将其追加到连接字符串中检索用户 ID 和密码信息时) 的连接字符串。 应用程序应确保用户不能嵌入在这些值中的其他连接字符串参数 (例如,输入一个密码作为"validpassword; 数据库 = somedb"尝试附加到不同数据库中)。 如果你需要构造基于用户输入的连接字符串,使用新SqlConnectionStringBuilder,它验证的连接字符串,并有助于避免此问题。 有关更多信息,请参见连接字符串生成器






[url=]示例[/url]


下面的示例创建SqlConnection和设置ConnectionString之前打开连接的属性。

[url=]C#[/url]
VB



private static void OpenSqlConnection(){? ? string connectionString = GetConnectionString();? ? using (SqlConnection connection = new SqlConnection())? ? {? ?? ???connection.ConnectionString = connectionString;? ?? ???connection.Open();? ?? ???Console.WriteLine("State: {0}", connection.State);? ?? ???Console.WriteLine("ConnectionString: {0}",? ?? ?? ?? ?connection.ConnectionString);? ? }}static private string GetConnectionString(){? ? // To avoid storing the connection string in your code,? ???// you can retrieve it from a configuration file.? ? return "Data Source=MSSQL1;Initial Catalog=AdventureWorks;"? ?? ???+ "Integrated Security=true;";}











您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表