设置连接属性

可以通过多种方式指定连接字符串的属性:

  • 当使用 DriverManager 类进行连接时,在连接 URL 中通过“名称=值”属性进行指定。

  • DriverManager 类中 Connect 方法的 Properties 参数中通过“名称=值”属性进行指定。

  • 在驱动程序数据源的适当的 setter 方法中指定值。例如:

              datasource.setServerName(value)
    datasource.setDatabaseName(value)
    

属性名区分大小写,重复的属性名将按以下顺序进行解析:

  1. API 参数(如用户和密码)

  2. 属性集合

  3. 连接字符串中的最后一个实例

此外,属性名允许使用未知的值,JDBC 驱动程序不会对这些值进行大小写验证。

允许使用同义词,并按顺序进行解析,如同处理重复的属性名。

下表列出了 JDBC 驱动程序当前可用的所有连接字符串属性。

属性 类型 默认值 说明

applicationName

字符串

[<=128 个字符]

null

如果未提供名称,则使用应用程序名称或“Microsoft SQL Server 2005 JDBC Driver”。用于在各种 SQL Server 分析和日志记录工具中标识特定的应用程序。

databaseName、database

字符串

[<=128 个字符]

null

要连接到的数据库名称。如果未声明,则连接到默认的数据库。

disableStatementPooling

布尔型

["true"|"false"]

true

当前仅支持值“true”。如果设置为“false”,将出现异常。

encrypt

布尔型

["true"|"false"]

false

如果设置为“true”,则指定在服务器安装了证书的情况下,SQL Server 将为在客户端与服务器之间发送的所有数据使用安全套接字层 (SSL) 加密。默认值为 false。

failoverPartner

字符串

null

在数据库镜像配置中使用的故障转移服务器名称。与主服务器进行初始连接时若发生失败,则会使用此属性;建立初始连接后,将忽略此属性。必须与 databaseName 属性结合使用。

hostNameInCertificate

字符串

null

要用于验证 SQL Server SSL 证书的主机名。

如果未指定 hostNameInCertificate 属性或此属性设置为空,则 Microsoft SQL Server 2005 JDBC Driver 将使用连接 URL 上的 serverName 属性值作为主机名来验证 SQL Server SSL 证书。

备注

此属性与 encrypt 属性和 trustServerCertificate 属性结合使用。当且仅当 encrypt 属性设置为“true”且 trustServerCertificate 设置为“false”时,此属性才影响证书验证。

instanceName

字符串

[<=128 个字符]

null

要连接到的 SQL Server 2000 或 SQL Server 2005 实例名。如果未指定,则连接到默认的实例。对于 instanceName 和端口均未指定的情况,请参阅有关端口的备注。

integratedSecurity

布尔型

["true"|"false"]

false

设置为“true”表示 SQL Server 将使用 Windows 凭据来验证应用程序用户的身份。如果为“true”,则 JDBC 驱动程序将搜索本地计算机凭据缓存,以寻找在登录计算机或网络时已提供的凭据。如果为“false”,则必须提供用户名和密码。

备注

只有 Microsoft Windows 操作系统才支持此连接属性。

lastUpdateCount

布尔型

["true"|"false"]

true

如果值为“true”,则仅返回传递给服务器的 SQL 语句的最终更新计数,它可用于单个的 SELECT、INSERT 或 DELETE 语句中,以忽略由服务器触发器引起的其他更新计数。将此属性设置为“false”可导致所有更新计数都被返回,包括由服务器触发器返回的更新计数。

备注

此属性仅当与 executeUpdate 方法一起使用时才适用。

lockTimeout

整型

-1

数据库报告锁定超时之前要等待的毫秒数。默认行为是无限期等待。如果指定,该值将成为此连接上所有语句的默认值。请注意,可以使用 Statement.setQueryTimeout() 设置特定语句的超时值。该值可为 0,指定为无需等待。

loginTimeout

int [0..65535]

0

因连接失败而中止连接之前驱动程序应等待的秒数。零值表示无超时值。非零值为因连接失败而中止连接之前驱动程序应等待的秒数。

packetSize

int [-1| 0 | 512..32767]

8000

用来与 SQL Server 通信的网络包大小,以字节为单位指定。值为 -1 表示使用服务器默认数据包大小。值为 0 表示使用最大值 32767。如果此属性设置为超过可接受范围的值,将发生异常。

重要

当启用加密 (encrypt=true) 时,建议您不要使用 packetSize 属性。否则,驱动程序可能引发连接错误。有关详细信息,请参阅 SQLServerDataSource 类的 setPacketSize 方法。

password

字符串

[<=128 个字符]

null

数据库密码。

portNumber、port

int [0..65535]

1433

SQL Server 侦听的端口。如果在连接字符串中指定了端口号,则不会向 sqlbrowser 发出请求。如果端口和 instanceName 都已指定,则将建立到指定端口的连接。但是,将对 instanceName 进行验证,如果它与端口不符,将引发错误。

重要

建议始终指定端口号,因为这比使用 sqlbrowser 更安全。

responseBuffering

字符串

["full"|"adaptive"]

full

如果此属性设置为“full”,当执行语句时,将从服务器读取整个结果集。对于 Microsoft SQL Server 2005 JDBC Driver 版本 1.2,默认模式为“full”,该模式提供与 Microsoft SQL Server 2005 JDBC Driver 版本 1.0 和 1.1 的向后兼容性。如果此属性设置为“adaptive”,必要时将缓冲最少的数据。对于 Microsoft SQL Server 2005 JDBC Driver 版本 1.2,首选模式为“adaptive”(自适应)。

selectMethod

字符串

["direct"|"cursor"]

direct

如果将该属性设置为“cursor”,则对基于 TYPE_FORWARD_ONLY 和 CONCUR_READ_ONLY 游标的连接创建的每个查询,都会创建一个数据库游标。通常仅当应用程序生成的结果集非常大,以至于客户端内存无法完全容纳时,才需要使用该属性。如果将该属性设置为“cursor”,则客户端内存中仅保留数目有限的结果集行。默认行为是在客户端内存中保留所有结果集的行。在应用程序需要处理所有行时,此行为可提供最快性能。

sendStringParametersAsUnicode

布尔型

["true"|"false"]

true

设置为“false”,将指定作为 ASCII 而不是 Unicode 来发送字符数据的预定义参数。该参数可提高对非 Unicode、SQL Server 2000 或 SQL Server 2005 表进行字符数据索引查找时的性能。例如,ASCII 行的键可直接进行比较,无需从 Unicode 进行转换。有关详细信息,请参阅 Microsoft 讨论,网址为 support.microsoft.com/kb/271566(英文)。

serverName、server

字符串

null

运行 SQL Server 的计算机。

userName、user

字符串

[<=128 个字符]

null

数据库用户。

trustServerCertificate

布尔型

["true"|"false"]

false

如果设置为“true”,则指定 Microsoft SQL Server 2005 JDBC Driver 将不验证 SQL Server SSL 证书。

如果设置为“true”,当使用 SSL 对通信层加密时,将自动信任 SQL Server SSL 证书。

如果设置为“false”,Microsoft SQL Server 2005 JDBC Driver 将验证服务器 SSL 证书。如果服务器证书验证失败,驱动程序将报错并终止连接。默认值为“false”。

备注

此属性与 encrypt 属性结合使用。当且仅当 encrypt 属性设置为“true”时,此属性才影响服务器 SSL 证书验证。

trustStore

字符串

null

指向证书 trustStore 文件的路径(包括文件名)。trustStore 文件包含客户端信任的证书的列表。

如果未指定此属性或此属性设置为空,则驱动程序将依赖于信任关系管理器工厂的查找规则以确定要使用哪一个证书存储区。

默认的 SunX509 TrustManagerFactory 试图按以下搜索顺序查找信任的材料。

  • 由“javax.net.ssl.trustStore”Java 虚拟机 (JVM) 系统属性指定的文件。

  • “<java 主文件夹>/lib/security/jssecacerts”文件。

  • “<java 主文件夹>/lib/security/cacerts”文件。

有关详细信息,请参阅 Sun Microsystems 网站上的 SUNX509 TrustManager 接口文档。

备注

当且仅当 encrypt 属性设置为“true”且 trustServerCertificate 属性设置为“false”时,此属性才影响证书 trustStore 查找。

trustStorePassword

字符串

null

用于检查 trustStore 数据完整性的密码。

如果设置了 trustStore 属性,但未设置 trustStorePassword 属性,则不检查 trustStore 的完整性。

如果未指定 trustStore 和 trustStorePassword 属性,驱动程序将使用 JVM 系统属性“javax.net.ssl.trustStore”和“javax.net.ssl.trustStorePassword”。如果未指定“javax.net.ssl.trustStorePassword”系统属性,则不检查 trustStore 的完整性。

如果未指定 trustStore 属性,但设置了 trustStorePassword 属性,JDBC 驱动程序将使用由“javax.net.ssl.trustStore”指定作为信任存储区的文件,并使用指定的 trustStorePassword 检查信任存储区的完整性。当客户端应用程序不希望在 JVM 系统属性中存储密码时,这一点可能是必需的。

备注

当且仅当 encrypt 属性设置为“true”且 trustServerCertificate 属性设置为“false”时,trustStorePassword 属性才影响证书 trustStore 查找。

workstationID

字符串

[<=128 个字符]

<空字符串>

工作站 ID。用于在各种 SQL Server 探查和日志记录工具中标识特定的工作站。如果未指定任何内容,则使用 <空字符串>。

xopenStates

布尔型

["true"|"false"]

false

设置为“true”将指定驱动程序在异常时返回 XOPEN 兼容的状态代码。默认将返回 SQL 99 状态代码。

另请参见

其他资源

通过 JDBC 驱动程序连接到 SQL Server