SQL Server 登录失败从 Java DriverManager.getConnection(),从 Python



我正在尝试使用DriverManager.getConnection()从Java应用程序连接到SQL Server数据库,但是我不断收到"用户登录失败"错误。我尝试使用com.microsoft.sqlserver.jdbc.SQLServerDrivernet.sourceforge.jtds.jdbc.Driver进行连接,但两者都遇到了这个问题。

这是我用来连接的代码:

Class.forName("net.sourceforge.jtds.jdbc.Driver");  
conn=DriverManager.getConnection("jdbc:jtds:sqlserver://SERVERADDRESS:1433;DatabaseName=DBNAME;user=USER;password=PASS");  

我知道该帐户可以访问该数据库,因为我之前使用具有相同服务器/DB/信誉的pymssql.connect(SERVERADDRESS, USER, PASS, DBNAME)从 Python 应用程序连接到它。

从这篇文章中,我最终设法通过我的个人帐户使用 Windows 身份验证让它工作,但我仍然无法使用我们的服务帐户让它工作。有没有人知道为什么Python应用程序可以连接而Java应用程序不能?

pymssql 建立在 FreeTDS 之上。FreeTDS 和 jTDS 都支持名为 NTLM 的旧版 Windows 身份验证方案,而当前版本的 Microsoft JDBC Driver for SQL Server (mssql-jdbc) 不再支持该身份验证机制。

因此,鉴于您已经确认 pymssql 可以连接,您应该能够以 Windows 用户身份从您的 Java 应用程序进行连接,MYDOMAINusername使用 jTDS,如下所示:

String myUid = "username", myPwd = "mypassword";
String connUrl = "jdbc:jtds:sqlserver://192.168.1.123:1433/databasename;DOMAIN=MYDOMAIN";
Connection conn = DriverManager.getConnection(connUrl, myUid, myPwd);

要找出"用户登录失败"的原因,应该转到SQL Server错误日志

18456 error的下一行将为您提供原因。

在您的情况下,最可能的失败原因是服务器配置为使用Windows Authentication only

相关内容

  • 没有找到相关文章

最新更新