gpt4 book ai didi

java - 从 jTDS JDBC 驱动程序迁移到 Microsoft JDBC

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:15 24 4
gpt4 key购买 nike

Microsoft 最近发布了一个新的 JDBC 驱动程序(版本 6.0.7507.100),其中包含一些非常有趣的功能。我最感兴趣的是 TVP 功能。这就是为什么我想用 Microsoft 驱动程序替换当前的 jTDS 驱动程序。

尝试登录我们的生产服务器时出现问题。假设我们使用域用户“mydomain\dbuser”登录到 sql server 实例。这是我们目前使用的 jtds jdbc url:

jdbc:jtds:sqlserver:/sqlServer:1433/myDb;domain=mydomain;user=dbuser;password=secretPwd

它就像一个魅力。

但是当我尝试使用 Microsoft 驱动程序时,我的应用程序无法与数据库建立连接。我尝试了以下 URL 字符串:

jdbc:sqlserver://sqlServer:1433;database=myDb;username=dbuser;password=secretPwd
jdbc:sqlserver://sqlServer:1433;database=myDb;username=mydomain\dbuser;password=secretPwd
jdbc:sqlserver://sqlServer:1433;database=myDb;username=dbuser@mydomain;password=secretPwd

和许多其他排列但没有成功。该应用程序失败,出现以下异常:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'mydomain\dbuser'

在 SQL Server 日志中,我们收到以下错误:

Login failed for user 'mydomain\dbuser'. Reason: Attempting to use an NT account name with SQL Server Authentication. [CLIENT: 10.10.10.10]

请注意,该应用程序应该在 Linux 下运行。

有人知道以域用户身份连接时 Microsoft JDBC URL 应该是什么样子吗?

最佳答案

我对这个问题的研究得出了以下结论:

  • 从 jTDS 驱动程序到 Microsoft 驱动程序的简单转换是不可能的,正如我在问题中预期的那样。这是因为 jTDS 驱动程序实现了 Microsoft 驱动程序不可用的 NTLM 身份验证。
  • 另一种方法是使用 Linux 机器上可用的 JavaKerberos 身份验证方案(正如 Gord Thomson 所建议的)。幸运的是,我们在生产环境中设置了 Kerberos 基础架构。

主要是在这些 Microsoft(博客)帖子的帮助下,我成功地在我的服务中添加了 Kerberos 身份验证:

所以我将使用它。

关于java - 从 jTDS JDBC 驱动程序迁移到 Microsoft JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com