无法使用jTDS连接到SQL Server

科莫洛多

我正在尝试通过Java连接到SQL Server 2008 R2,但无法使用jTDS 1.2.8进行连接。奇怪的是,使用Microsoft JDBC驱动程序可以正常工作。是否需要启用某些服务器端设置才能使jTDS访问它?还是我只是在URL中缺少某些内容?

我没有使用Windows集成身份验证来指定凭据,也没有尝试使用SSL加密进行连接(这些是我发现的问题,可以生成我所看到的异常。)

如果我在Microsoft驱动程序中使用以下命令,它可以按预期工作,则可以毫无问题地访问数据库:

Connection connection = DriverManager.getConnection("jdbc:sqlserver://PHSSQL792\\PHSSQL792:1433", user, password);

userpassword是之前声明的变量,因此可以确定在与任一驱动程序连接时使用相同的值。)

但是,如果我在jTDS驱动程序中使用以下命令:

Connection connection = DriverManager.getConnection("jdbc:jtds:sqlserver://PHSSQL792:1433;instance=PHSSQL792", user, password);

我收到以下错误:

java.sql.SQLException: I/O Error: DB server closed connection.
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2387)
    at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:614)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:356)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at database.db_access.SqlServerDatabaseTestApp.main(SqlServerDatabaseTestApp.java:28)
Caused by: java.io.IOException: DB server closed connection.
    at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:853)
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:732)
    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:2281)
    at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:614)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:356)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at database.db_access.SqlServerDatabaseTestApp.main(SqlServerDatabaseTestApp.java:28)

我尝试使用和/或不使用数据库名称和/或使用/不使用实例名称进行连接,并得到相同的结果。有什么建议么?

编辑:

我尝试过的其他jTDS连接URL(都给了我与上面相同的错误):

"jdbc:jtds:sqlserver://PHSSQL792:1433"
"jdbc:jtds:sqlserver://PHSSQL792:1433/pacsdb"
"jdbc:jtds:sqlserver://PHSSQL792:1433/pacsdb;instance=PHSSQL792"

相应的Microsoft URLS(均有效):

"jdbc:sqlserver://PHSSQL792:1433"
"jdbc:sqlserver://PHSSQL792:1433;databasename=pacsdb"
"jdbc:sqlserver://PHSSQL792\\PHSSQL792:1433;databasename=pacsdb"

另外,我可以使用jTDS驱动程序成功连接到其他SQL Server 2008 R2数据库(在其他服务器上),因此它不是jar。

科莫洛多

万一有人碰到这个问题,我会在很久以后再回到这个问题上,最后找出问题所在。有问题的SQL Server实例已配置为需要SSL连接!我只是添加ssl=request到URL使其起作用。

我认为Microsoft驱动程序在未显式设置SSL加密的情况下工作的原因是它始终始终与SSL连接以对登录的用户名/密码进行加密。encrypt属性仅控制登录后的数据是否被加密。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

DBVisualizer无法使用jTDS连接到SQL Server

来自分类Dev

jTDS连接字符串:使用反斜杠连接到MS SQL Server实例

来自分类Dev

使用JDBC的SQL Server连接-JTDS

来自分类Dev

无法使用PHP连接到SQL Server

来自分类Dev

无法使用PHP连接到SQL Server

来自分类Dev

无法使用 IP 连接到 SQL Server

来自分类Dev

无法使用java连接到sql server

来自分类Dev

无法使用PYODBC连接到网络外部的远程SQL Server

来自分类Dev

无法使用JDBC连接到Sql Server数据库

来自分类Dev

无法使用 Spring JDBC 通过 SSL 连接到 SQL Server

来自分类Dev

无法使用JTDS 1.3.1执行SQL Server脚本

来自分类Dev

连接到VPN时无法连接到本地Sql Server

来自分类Dev

无法直接从Android连接到SQL Server

来自分类Dev

PyOdbc无法连接到SQL Server实例

来自分类Dev

无法远程连接到SQL Server实例

来自分类Dev

无法从PHP连接到SQL Server

来自分类Dev

无法从Docker容器连接到SQL Server

来自分类Dev

无法连接到Sql Server 2012

来自分类Dev

无法通过ODBC连接到SQL Server

来自分类Dev

SSMS无法连接到SQL Server 2019

来自分类Dev

无法连接到SQL Server 2012

来自分类Dev

SQL Server 2008无法连接到实例

来自分类Dev

无法将tsql连接到SQL Server

来自分类Dev

无法从RStudio连接到Microsoft SQL Server

来自分类Dev

无法连接到 AWS SQL Server

来自分类Dev

PHP 无法连接到 SQL Server

来自分类Dev

无法远程连接到 SQL Server

来自分类Dev

无法通过Windows 2012上的系统dsn使用ODBC连接连接到SQL Server 2008

来自分类Dev

无法使用连接字符串连接到本地SQL Server DB,但是VS可以