Oracle SQL Developer 连接到 Microsoft SQL Server

8
我一直尝试着使用Windows认证让最新版本的Oracle SQL Developer(4.0.2)连接到Microsoft SQL服务器,但都没有成功。我已经从jtds-1.3.1-dist下载并复制了ntmlauth.dll(还有JtdsXA.dll)文件到我能想到的每个位置,因为我认为开发人员会在那里查找它,但是当我尝试通过SQLServer选项卡设置新连接时,点击“使用Windows身份验证”选项,我得到的消息只有“状态:失败-I/O错误:SSO失败:未加载本机SSPI库。请检查java.library.path系统属性。”然而,我可以使用Toad for SQL Server或SSMS轻松连接到数据库,但如果可能的话,我更喜欢使用SQL Developer。

https://dev59.com/V3VD5IYBdhLWcg3wXaYd - z atef
我不久前正在研究这个问题。我能找到的最好的东西就是上面的帖子。http://blog.bittersweetryan.com/2012/01/using-oracles-free-sql-developer-as.html?m=1 - z atef
4个回答

6

..\jtds-1.3.1-dist\x64\SSO\ntlmauth.dll复制到 ..\sqldeveloper\jdk\jre\bin 文件夹中,适用于 x64 系统。对于 x86 系统,请复制粘贴类似文件夹内容。


这应该是被接受的答案。我希望 Stack Overflow 能够让管理员接受旧问题中没有答案的回答。 - Jabda

3
我也遇到了同样的问题。最终,我将 ntlmauth.dll 放置在 sql-developer 目录下的 jdk\jre\bin 文件夹中才解决了此问题。由于 sql-developer 附带自己的 jdk,所以我通过浏览找到了该文件夹。我花费了数小时的时间试图弄清楚为什么将前述 DLL 放置在各个系统级别的 jre 目录(即 C:\Program Files\Java\jre7\bin)中都没有起作用。
如果这里有人知道为什么将 ntlmauth.dll 放置在 sql-developer\jdk\jre\bin 文件夹中可以解决问题,而放置在系统级别的 jre 文件夹中则不行,我很感兴趣。
我的操作系统是 Windows 2007 64 位,使用的 jtds 版本是 jtds-1.2.7。

1
原因很简单; SQLDEVELOPER不知道已安装的系统级jre。Oracle将SQLDEVELOPER捆绑在一起,有和没有JAVA。如果您下载了没有Java的版本,则第一次启动应用程序时会提示您输入java_home的位置。如果您安装了已经安装了Java的SQLDEVELOPER版本,则它可以正常工作 - 无需提示。在您的情况下,您安装了已经打包了Java的应用程序版本。
所以问题的根源是SQLDEVELOPER(在您特定的安装中)没有使用系统级jre,因此您放置在该目录中的ntlmauth.dll从未被使用。

0
在将jTDS驱动程序(jtds-1.3.1)添加到Oracle SQL Developer(工具->首选项->数据库->第三方JDBC驱动程序)之后,我找到了SQL Developer的ide.conf文件并添加了以下行:
#jTDS
Add64VMOption -Djava.library.path=../../drivers/jtds-1.3.1-dist/x64/SSO
Add32VMOption -Djava.library.path=../../drivers/jtds-1.3.1-dist/x86/SSO

enter image description here

这将把ntlmauth.dll库的位置添加到JVM库路径中


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