Microsoft JDBC Driver 4.0 for SQL Server
在微软发布SQL Server 2012的前一天,也同时发布了针对SQL Server 2012的JDBC Driver 4,下载地址为:
http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=49C554CA-41A0-472C-B728-75DF5789369C
从 3.0 到 4.0 的更改:
1765616 对于 katmai 和更高版本,DatabaseMetadata.getTypeInfo 现在为 date、time、
datetime2、datetimeoffset 返回新 java.sql.Type 值。
1764334 增加了对于跟踪 JDBC XA 超时和 XID 的支持。
1750318 SQLServerDatabaseMetaData 函数现在可在重复使用入池连接时正确工作。
1768845 setTimestamp 和 updateTimestamp 的行为在关于往返方面已经一致。驱动程序会在将数据发送到
服务器之前先将其舍入到 7 位小数。
1770134 具有最大值 (23:59:59.999) 的时间后端类型上的 updateTime 现在可导致正确的舍入行为。
1761042 DataSource Boolean 属性现在会记录退出调用。
1750330 更新了 XA SQL 脚本以避免在首次运行时出现误导错误。
1761393 为 unwrap 方法改进了跟踪。
1945579 DatabaseMetaData.getSchemas 现在可针对所有排序规则与 SQL Azure 和 SQL Server 一起正常工作。
1963089 hostNameInCertificate 连接属性不再是针对 SQL Azure 验证 SSL 证书时所必需的。
1958531 如果不是为数据库镜像设置的服务器连接在登录过程中失败(例如,数据库不存在),驱动程序不会自动重试。
1954701 插入重复行时引发的异常现在包含 SQLState 23000。
2055259 改进了加载 sqljdbc_auth.dll 后集成身份验证失败时的错误信息。
2083373 针对 SQL Azure 的使用了无效参数的大型参数化查询现在引发异常时不关闭连接。
2084385 getDate、getTimestamp、getDateTimeOffset 现在返回所有日期都使用 JRE 1.7 的正确值。
2105115 从 DatabaseMetaData.getColumns 获取的 ResultSet 上的 getObject 现在可以正常工作。
注意:
1、该版本Microsoft JDBC Driver 4.0 for SQL Server的运行环境:Linux;Unix;Windows 7;Windows Server 2008 R2;Windows Vista。
换言之,不再支持win2003和XP。
2、支持的SQL Server 版本为:
- Microsoft® SQL Server® 2012
- Microsoft® SQL Server® 2008 R2
- Microsoft® SQL Server® 2008
- Microsoft® SQL Server® 2005
- Microsoft® SQL AzureTM(新增)
不再支持SQL Server 2000及以下版本。而3.0则支持SQL Server 2000/2005/2008/2008r2版本。(http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707)
做了个测试,下载Microsoft JDBC Driver 4.0 for SQL Server,并解压,参照这篇文章http://www.cnblogs.com/downmoon/archive/2009/07/16/1524687.html ,复制sqljdbc4.dll,到JRE目录下,并添加引用。
不料在DEMO程序中一直提示无法连接,提示“无法创建下列URL的连接:jdbc:sqlserver://ap2\\vegnet:1433;DatabaseName=Db2010Demo”,我的连接串如下:
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
sqlserver.url=jdbc:sqlserver://ap2\\vegnet:1433;DatabaseName=Db2010Demo
sqlserver.user=demo
sqlserver.password=demo2012
sqlserver.maxconn=2000
确认用户名和密码无误,防火墙无误,于是怀疑该新驱动程序不支持非默认实例名的连接。换了另外服务器的默认的实例也不行。后来,发现自己的SQL Server 默认端口没有设置,
如下图:
设置好端口,重新启动SQL Server服务。连接成功!!
其他示例: