簡體   English   中英

JDBC連接不適用於Sql Server 2012或更高版本

[英]JDBC connection doesn't work with Sql Server 2012 or higher

以下代碼適用於Sql Server 2008,但不適用於Sql Server 2012和2014(v 11或12)

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url="jdbc:sqlserver://myhost\\myinstance:1433;database=mydb";
connection = DriverManager.getConnection(url,"username", "pwd");

我正在使用Java Runtime 1.7

您正在下面的Shell行中看到,我正在使用Microsoft驅動程序。

我嘗試將sqljdbc_auth.dll(我嘗試過32位和64位)放入jar驅動程序文件夾中,
在JRE bin文件夾中,甚至作為java.library.path傳遞

我已經在配置管理器中(在Sql Server上)簽入了啟用TCP / IP並在端口1433響應的信息。

防火牆關閉。

這是我得到的錯誤:

c:\\ test \\ TestConn \\ Test2 \\ bin>“ C:\\ Program Files \\ Java \\ jre7 \\ bin \\ java” -classpath C:\\ libsqlsvr \\ sqljdbc_6.0 \\ ita \\ sqljdbc4.1.jar;。 -Djava.library.path = C:\\ libsqlsvr \\ sqljdbc_6.0 \\ ita \\ auth \\ x64測試com.microsoft.sqlserver.jdbc.SQLServerException:與熱myhost的TCP / IP連接(端口1433)失敗。 錯誤:“連接超時。請驗證連接屬性。請確保SQL Server實例正在主機上運行並在端口上接受TCP / IP連接。請確保與端口的TCP連接沒有被防火牆阻止。 ”。 com.microsoft.sqlserver.jdbc.SocketFinder上com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExcepti onToSQLServerException(SQL ServerException.java:241)上com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(S QLServerException.java:190) .findSocket(IOBuffer.java:22 43)位於com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)位於com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLSer verConnection.java:1309) com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)上的com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConne ction.java:991)在com.microsoft.sqlserver.jdbc.SQLServerDriver在Test.main(Test.com)上的java.sql.DriverManager.getConnection(Unknown Source)上的connect(SQLServerDriver.java:1012)在Test.testsqlsvr(Test.java:135)上的java.sql.DriverManager.getConnection(Unknown Source)上。 Java的:24)

您知道什么可能導致問題嗎?

由於您正在JDBC中使用SQL Server的HOST:PORT標識,因此應在HOST部分中提供有效的IP或主機名,而不是實例名稱(即,不提供“ myhost \\ myinstance”,而是實際的網絡主機名/ IP) 。

JDBC連接通過普通的TCP進行,因此HOST:PORT是普通的網絡地址,不是Microsoft的魔法。 HOSTNAME\\INSTANCE使用駐留在已知端口(UDP 1434)上的調度程序服務( SQL Server Browser ),並根據\\INSTANCE部分轉發連接,並且不與端口組合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM