在微軟發布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服務。連接成功!!
其他示例: