Sql server 使用jTDS连接到SQL Server 2012引发IOException;MS SQL驱动程序工作正常

Sql server 使用jTDS连接到SQL Server 2012引发IOException;MS SQL驱动程序工作正常,sql-server,jdbc,jtds,Sql Server,Jdbc,Jtds,以下代码使用jTDS驱动程序(1.3.1): 结果: java.sql.SQLException: I/O Error: DB server closed connection. at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2481) at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:632) at net.sourceforge.jt

以下代码使用jTDS驱动程序(1.3.1):

结果:

java.sql.SQLException: I/O Error: DB server closed connection.
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2481)
    at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:632)
    at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:371)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.example.crd.test.TestDb.main(TestDb.java:20)
Caused by: java.io.IOException: DB server closed connection.
    at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:852)
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:731)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2368)
我正在尝试连接到SQL Server 2012数据库。注意:用户对数据库具有只读访问权限。我无权更改SQL Server 2012上的任何配置。我曾尝试使用相同的代码连接到SQLServer2005数据库,在这种情况下,Microsoft和jTDS驱动程序都可以正常工作


如何使用jTDS毫无例外地连接到SQL Server 2012数据库?

是“anIpAddress”真正代表的只是一个IP,还是它实际上代表的是服务器上的一个命名实例,如“someserver\instance”?他们可能有一个非默认实例侦听奇数端口号,并且microsoft驱动程序正在与sql browser服务正确协商以找到该实例的侦听端口号,但jtds驱动程序没有。如果是这种情况,找出侦听端口号并显式地将其放入连接字符串应允许您在不使用sql浏览器服务的情况下进行连接。“anIpAddress”表示IP(例如216.58.218.110)。我可以使用MS SQL驱动程序显式地包含端口号1433,它仍然可以工作。如果我使用jTDS显式包含端口号,它仍然会失败。在使用sqoop中的jTDS连接到Azure DW microsoft sql server时,我面临同样的问题,并且群集已启用kerberos。。如果有人能尽快回复,那会很有帮助。。。
java.sql.SQLException: I/O Error: DB server closed connection.
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2481)
    at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:632)
    at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:371)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.example.crd.test.TestDb.main(TestDb.java:20)
Caused by: java.io.IOException: DB server closed connection.
    at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:852)
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:731)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2368)
DriverManager.getConnection("jdbc:sqlserver://anIpAddress;databaseName=aDatabase", "user", "pass")