JTDS驱动程序无法与Sql Server 2008R2和Denali本机SSPI库一起使用。请检查java.library.path系统属性。

9
我正在尝试使用JTDS驱动程序从我的应用程序使用Windows身份验证连接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不起作用。
3个回答

15

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

请确保匹配DLL与JVM的“位数”(32位或64位)。

我在使用SQL Server Express 2008 R2时遇到了相同的问题,这篇MSDN SQL Server 论坛文章推荐这个解决方法,对我有用。


一个容易被忽视的问题是JVM和库的字长不匹配。因此,如果您正在运行32位Java并且有64位DLL,则它将无法加载。 - Anders Zommarin

4
除了直接放入您的JRE中,您还可以通过如下方式指定java.library.path
-Djava.library.path=C:\jtds-1.3.1-dist\x64\SSO

上述目录将包含 ntlmauth.dll 文件。

0
除了DeChrist的回答之外,我还不得不在C:\Program Files\Java\jdk1.8.0_91\jre\bin文件夹的bin文件夹中添加相同的dll文件。 在这种情况下,它对我起作用了。

1
这对我来说更像是一条评论而不是一个完整的答案。 - Marcs
3
我想留言,但我还没有足够的声望。目前来看,我只能在自己的回答中留言。 - Sergio Rodríguez González

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接