JTDS 与 SQL Server 的连接问题 - 适用于 2000 但不适用于 2005

Posted

技术标签:

【中文标题】JTDS 与 SQL Server 的连接问题 - 适用于 2000 但不适用于 2005【英文标题】:JTDS Connection problems to SQL Server - Works on 2000 but not 2005 【发布时间】:2010-09-06 08:39:48 【问题描述】:

我一直试图让一个 java 应用程序通过 jtds jdbc 连接到几个 SQL 服务器。我必须通过 Windows 身份验证连接。

指定的连接字符串是:

String connectionString = _"jdbc:jtds:sqlserver://"+server+":"+port+"/"+database+";domain="+domain;_

我通过以下方式获得连接:

con = java.sql.DriverManager.getConnection(url, _username, _password);

这在我的 SQL Server 2000 上运行良好,但在 SQL Server 2005 上却不行。在我的 SQL Server 2005 上,我收到以下错误消息:

java.sql.SQLException: 用户 '' 登录失败。该用户未与受信任的 SQL Server 连接关联。

看起来有点好笑,因为异常中的用户是空白的,但参数中指定的用户名不是空白。

我感觉这可能与 NTLM 和 Windows 身份验证有关,因为当我尝试使用 SQL 身份验证(即没有域属性)登录时它可以工作

【问题讨论】:

【参考方案1】:

发生这种情况是因为 SQL Server 2005/2008 在安装后具有不同的默认值。您仍然需要:

    在您的 Windows 防火墙中打开端口 1433。 在端口 1433 上启用 TCP 侦听器(在 SQL 配置管理器中)(您可以为您的计算机拥有的每个 IP 地址启用/禁用侦听器) 启用 sa 帐户(或创建您自己的 SQL 帐户)(这也假设您没有使用集成身份验证) 为您的实例启用混合身份验证。

如果这不起作用,请告诉我们您使用 Microsoft JDBC 驱动程序 3.x 版或更高版本获得的结果...

【讨论】:

以上是关于JTDS 与 SQL Server 的连接问题 - 适用于 2000 但不适用于 2005的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中使用JTDS驱动连接sql server

Java连接SQL Server:jTDS驱动兼容性问题

带有 Service Pack 2 的 SQL Server Developer Edition 的 jTDS 连接字符串

jTDS Java连接SQL Server 2000数据库

什么是MS SQL Server 2005 Express的jTDS JDBC Connect URL

Hibernate + JPA + jTDS + SQL Server = Unicode 问题