版本信息
Microsoft SQL Server 2005 JDBC Driver 1.2
2007 年 10 月
简介
------------
此文件包含为 Microsoft SQL Server 2005 JDBC Driver 文档提供补充的最新
信息和其他重要信息。在安装 JDBC 驱动程序之前,应通读此文件。
您的反馈对于我们非常重要,我们将力求及时回复您的反馈。有关使用 JDBC 驱
动程序新闻组和在线论坛提供反馈的信息,请参阅 http://msdn.microsoft.com/
data/ref/jdbc 上的 Microsoft SQL Server 2005 JDBC Driver 页。
安装
------------
install.txt 中提供了有关安装 JDBC 驱动程序的说明。
有关在 Windows 和 Unix 操作系统上安装 JDBC 驱动程序的信息,请参阅该文件。
版本内容
----------------
Microsoft SQL Server 2005 JDBC Driver 可执行 zip 或 tar 文件将以下文件解
压缩到指定的位置(相对于所选安装目录):
<安装目录>\sqljdbc_<版本>\<语言>\install.txt
<安装目录>\sqljdbc_<版本>\<语言>\release.txt
<安装目录>\sqljdbc_<版本>\<语言>\license.txt
<安装目录>\sqljdbc_<版本>\<语言>\sqljdbc.jar
<安装目录>\sqljdbc_<版本>\<语言>\auth\x86\sqljdbc_auth.dll
<安装目录>\sqljdbc_<版本>\<语言>\auth\x64\sqljdbc_auth.dll
<安装目录>\sqljdbc_<版本>\<语言>\auth\ia64\sqljdbc_auth.dll
<安装目录>\sqljdbc_<版本>\<语言>\help\default.htm
<安装目录>\sqljdbc_<版本>\<语言>\help\index.htm
<安装目录>\sqljdbc_<版本>\<语言>\help\toc.htm
<安装目录>\sqljdbc_<版本>\<语言>\help\html\<文档页...>
<安装目录>\sqljdbc_<版本>\<语言>\help\local\<文档文件...>
<安装目录>\sqljdbc_<版本>\<语言>\help\samples\<示例文件...>
<安装目录>\sqljdbc_<版本>\<语言>\xa\xa_install.sql
<安装目录>\sqljdbc_<版本>\<语言>\xa\x86\sqljdbc_xa.dll
<安装目录>\sqljdbc_<版本>\<语言>\xa\x64\sqljdbc_xa.dll
<安装目录>\sqljdbc_<版本>\<语言>\xa\ia64\sqljdbc_xa.dll
更改列表
-----------
以下是自 2006 年 9 月发布版本 1.1 以来,在 Microsoft SQL Server 2005 JDBC Driver
中已进行的更改的列表。
35034 getDate 方法现在可以在 IBM WebSphere Application Server 版本 5.1 和 6.0 上
正常工作。
36085 驱动程序现在正确地为由 SQLServerStatement.getGeneratedKey 方法返回的结果集
中的列名使用 GENERATED_KEYS。
37030 对于某些数据库排序规则,将连接字符串属性 sendStringParametersAsUnicode 设置
为 false 不再导致在 SQL Server 中出现错误 17805(从客户端收到无效的缓冲区)。
37556 驱动程序现在可以正确地将包含 Unicode 数据的字符流设置为非 Unicode 数据库列。
39311 对于使用排序规则返回 char、varchar 或文本列数据类型的查询,驱动程序现在对于
SQLServerResultSet 提供了更好的性能。
39941 当应用程序使用未正确指定的长度插入或更新 java.io.Reader 或 java.io.InputStream
对象时,驱动程序不再关闭连接。
43090 当设置了 SQLServerStatement.setMaxRows 时,SQLServerStatement.getUpdateCount
方法现在返回正确的更新计数。
45827 如果指定的参数或 SQL 语句返回的结果不是单个结果集,则 SQLServerStatement.executeQuery
方法现在引发 SQLException。
46707 驱动程序现在正确地支持通过使用命名参数调用存储过程。
49243 驱动程序现在对于 IBM WebSphere Application Server 版本 6.1 支持默认的
packetSize 值。
50554 当实际字符串长度大于 4000 时,驱动程序不再将存储过程中的输出字符串参数截断
至 4000 个字符。
55059 驱动程序现在支持所有印地语、迪维希语、印度语、叙利亚语和 AltDiction2(可
选字典顺序)排序规则。
57032 驱动程序不再记录由于关闭句柄为 -1 的内部准备的语句而导致的异常。
57853 当使用 XA 数据源通过 IBM WebSphere Application Server 版本 5.1 进行连接时,
SQLServerConnection.setTypeMap 方法不再导致 SQLException。
60179 当连接到 SQL Server 时,没有主机名的客户端计算机不再失败。
61202 在执行语句后,驱动程序现在正确地清除 SQLWarning 消息链。
92866 对语句调用 SQLServerStatement.setMaxRows 方法不再导致在后续语句中对同一
连接产生错误的行计数。
已知问题
------------
下面是有关 Microsoft SQL Server 2005 JDBC Driver 的已知问题:
1) 驱动程序与 SQL SERVER 2000 JDBC DRIVER 之间存在加载冲突
如果您在同一个进程中同时加载 Microsoft SQL Server 2000 JDBC Driver
和 Microsoft SQL Server 2005 JDBC Driver,在某些情况下,2000 版
JDBC 驱动程序将错误地接受 DriverManager.getConnection 方法调用,而
该调用实际是针对 2005 版 JDBC 驱动程序的。
产生这一问题的原因是:如果首先加载 2000 版 JDBC 驱动程序,则此驱动程
序将错误地接受 URL 前缀“jdbc:sqlserver://”。
若要解决此问题,请先加载 2005 版 JDBC 驱动程序类,如下所示:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2005 版
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 2000 版
这将确保 URL 前缀“jdbc:sqlserver://”由 2005 版 JDBC 驱动程序处理,而
URL 前缀“jdbc:microsoft:sqlserver://”由 2000 版 JDBC 驱动程序处理。
2) 有关为准备的语句获得参数元数据的限制
在将 SQLServerParameterMetaData 类用于准备的语句时,存在一些限制。SQL INSERT
语句需要可选的 INTO 子句并且 SQL DELETE 语句需要可选的 FROM 子句,才能正确地
获得参数元数据。
3) SQL SERVER 2000 数据转换限制
当将 SQL Server 2000 与 JDBC 驱动程序一起使用时,以下数据转换限制适用:
- 不能将 String 数据转换为基础 money 或 smallmoney 列。
- 如果 sendStringParametersAsUnicode 连接字符串属性设置为 false,则可
以将长度大于 4000 个字符的 String 数据转换为 char 或 varchar 基础列。
4) 有关命名参数的限制
在名称中包含左方括号“[”的存储过程不支持命名参数。例如,类似于
“stor[edProc”的名称。请注意,这不影响对使用“[]”的存储过程名
称的通常转义。
5) XA 事务在 WINDOWS XP 上失败
如果 SQL Server 在 Windows XP 上运行,则 XA 事务将无效,除非应用
以下修补程序:
http://support.microsoft.com/kb/922668
请注意,仅当正参与 XA 事务的 SQL Server 正在 Windows XP 上运行时,
才会出现此问题。在 Windows XP 上运行且与不在 Windows XP 上运行的
远程 SQL Server 相连的客户端应用程序可以参与 XA 事务。此问题不适
用于 Windows 2000 和 Windows Server 2003。
6) SUN SOLARIS 需要 GZIP 才能安装 JDBC 驱动程序
如果在 Sun Solaris 计算机上安装 JDBC 驱动程序,则首先可能需要安装
GZIP 以便解压缩驱动程序文件。可从 www.gzip.org 下载 GZIP。
7) 使用数据库镜像时连接超时
当您在数据库镜像配置中使用 JDBC 驱动程序时,默认的连接超时值为 0,
这可能导致无限期连接尝试。因此,当您尝试连接到最初都处于断开状态
的主体和镜像数据库时,JDBC 驱动程序将在各台服务器之间无限期地摇摆,
直到其中一台服务器恢复到联机状态。为了避免这种无限期连接尝试,请为
loginTimeout 连接字符串属性指定一个有限的值,或者在应用程序中加入
超时逻辑。
8) 转换 BIGDECIMAL 值
当您将 BigDecimal 值转换为字符串表示形式时,是否转换这些值将取决于
您所使用的 JVM 版本。
例如,以下代码说明了这些差异:
String str =