繁体   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