JDBC SQLServerException:“此驱动程序未配置为进行集成身份验证。”
问题内容:
我正在为SmartFoxServer(SFS)编写“服务器端扩展”
。在我的登录脚本中,我需要连接到MS SQL Server,这是我尝试使用JDBC进行的。我已经在调试环境中测试了JDBC代码,并且工作正常。
但
当我将服务器端扩展放入SFS的“扩展”文件夹中时(按照规范),我得到了com.microsoft.sqlserver.jdbc.SQLServerException
:
“此驱动程序未配置为进行集成身份验证。”。
我搜索了此错误,发现这通常是因为文件sqljdbc_auth.dll
不在系统路径中;我已将此文件复制到系统路径中的文件夹中,但仍然无法正常工作!
还有其他建议吗?
问题答案:
对于不同的处理器体系结构(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进程启动的环境。