【问题标题】:JTDS driver not working for Sql Server 2008R2 and Denali Native SSPI library not loaded. Check the java.library.path system propertyJTDS 驱动程序不适用于 Sql Server 2008R2 并且未加载 Denali Native SSPI 库。检查 java.library.path 系统属性
【发布时间】:2011-09-15 10:38:49
【问题描述】:

我正在尝试使用 Windows 身份验证从我的应用程序使用 JTDS 驱动程序连接 Sql Server 数据库,但出现以下错误

SSO 失败:没有原生 SSPI 库 加载。检查 java.library.path 系统属性。

以下是我尝试解决但仍然缺少某些内容的场景..

  1. 我已在系统目录中添加了 ntlmauth.dll,它适用于 Sql server 2005。
  2. 但是我为 Sql Server 2008 R2 和 Denali 尝试过同样的事情,但它给了我与上面提到的相同的错误
  3. 我也考虑了一下,我的意思是我从系统目录中的 x64\SSO\ 路径复制了 ntlmauth.dll。

我很困惑为什么这不适用于 Sql Server 2008 R2 和 Denali。

【问题讨论】:

    标签: sql-server jdbc sql-server-2008-r2 sql-server-2012 jtds


    【解决方案1】:

    尝试将ntlmauth.dll 文件放在Java 运行时环境的bin 文件夹中(例如C:\Program Files\Java\jre7\bin)。

    请务必将 DLL 的“位数”(32 位或 64 位)与 JVM 位数匹配。

    我在使用 SQL Server Express 2008 R2 时遇到了同样的问题,MSDN SQL Server Forum Article 推荐了这个对我有用的解决方案。

    【讨论】:

    • 一个容易忽略的事情是 JVM 和库的字长是否不匹配。因此,如果您运行的是 32 位 Java 并且拥有 64 位 DLL,那么它将不会加载。
    【解决方案2】:

    除了将其直接放入您的 JRE 之外,您还可以直接指定 java.library.path

    -Djava.library.path=C:\jtds-1.3.1-dist\x64\SSO
    

    上面的目录将包含ntlmauth.dll 文件

    【讨论】:

      【解决方案3】:

      除了 DeChrist 的响应之外,我还必须在 C:\Program Files\Java\jdk1.8.0_91\jre\binbin 文件夹中添加相同的 dll 文件。在那种情况下,它对我有用。

      【讨论】:

      • 这对我来说更像是一个评论而不是一个完整的答案。
      • 我试图发表评论,但我还没有足够的声誉。如我所见,目前我只能在自己的答案中做到这一点。
      猜你喜欢
      • 2020-06-02
      • 2016-08-07
      • 2017-02-07
      • 2016-10-16
      • 2012-05-30
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 2018-09-30
      相关资源
      最近更新 更多