如何解决JDBC SQLServerException:“此驱动程序未配置为进行集成身份验证”
对于不同的处理器体系结构(x86 / x64 / ia64),有不同版本的sqljdbc_auth.dll。您在SFS服务器上使用哪一个?
您必须选择一种以匹配在其下运行SFS的JVM的体系结构。因此,如果在64位计算机上运行32位Java,则需要x86版本,而不是x64版本。
我以前没有使用过SFS,所以不知道它是否在任何地方写入任何日志。如果是这样,则值得查看这些日志以查看是否有任何有用的东西被写入了日志。
:我不能100%地确定SFS使用64位Java仅仅是因为它用完了C:\ Program Files而不是C:\ Program Files(x86)。
我在“简介”>“需求和安装”下的SFS文档中找到以下行。尽管此行仅适用于Linux,而不适用于Windows,但它可能表明Windows上的SFS也使用32位Java:
从1.5版开始,SmartFoxServer带有自己的x86 32位Sun Java Runtime。
确定已安装的Java版本的一种快速方法是在cmd中输入以下命令: Java -version
它将在控制台上显示以下内容:
C:\Users\967097>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
在这里,您可以看到已安装的Java版本的位类型。
如果您使用sqljdbc_auth.dll的x86版本而不是x64版本,您的应用程序是否可以工作?如果突然开始使用x86 DLL,则SFS必须使用32位Java。
是否有用于启动SFS的批处理文件?如果是这样,那么通读该文章可能有助于指出SFS从何处运行Java。同时请注意对的任何更改PATH
。Java只能在java.library.path
system属性中加载DLL
,而在Windows上,这被设置为PATH
环境变量的值。
如果仍然不能确定SFS使用的是32位还是64位Java,请尝试使用Process Explorer查看运行SFS的java.exe进程启动的环境。
解决方法
我正在为SmartFoxServer(SFS)编写“服务器端扩展”
。在我的登录脚本中,我需要连接到MS SQL Server,这是我尝试使用JDBC进行的。我已经在调试环境中测试了JDBC代码,并且工作正常。
但
当我将服务器端扩展放入SFS的“扩展”文件夹中时(按照规范),我得到了com.microsoft.sqlserver.jdbc.SQLServerException
:
“此驱动程序未配置为进行集成身份验证。”。
我搜索了此错误,发现这通常是因为文件sqljdbc_auth.dll
不在系统路径中;我已将此文件复制到系统路径中的文件夹中,但仍然无法正常工作!
还有其他建议吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。