在微軟發布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服務。串連成功!!
其他樣本:
JDBC Driver For SQL2000/2005/2008
java中如何以windows整合方式串連SQL Server