我正在为 SmartFoxServer (SFS) 编写一个“服务器端扩展”。在我的登录脚本中,我需要连接到 MS SQL Server,我正在尝试使用 JDBC 进行连接。我已经在我的调试环境中测试了 JDBC 代码,它工作正常。
但
当我将服务器端扩展放在 SFS“扩展”文件夹中时(根据规范),我得到了 com.microsoft.sqlserver.jdbc.SQLServerException
:
“此驱动程序未配置集成身份验证。”。
我用Google搜索了这个错误,发现通常是因为文件 sqljdbc_auth.dll
不在系统路径中;我已经将这个文件复制到我的系统路径下的一个文件夹中,但仍然不起作用!
还有其他建议吗?
原文由 Shaul Behr 发布,翻译遵循 CC BY-SA 4.0 许可协议
针对不同的处理器架构 (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:
确定您安装的 Java 版本的一种快速方法是,在您的 cmd 中输入以下命令:
Java -version
它将向控制台显示以下内容:
在这里可以看到安装的java版本的bit类型。
如果您使用 x86 版本的 sqljdbc_auth.dll 而不是 x64 版本,您的应用程序是否可以运行?如果它突然开始使用 x86 DLL,则 SFS 必须使用 32 位 Java。
是否有用于启动 SFS 的批处理文件?如果是这样,通读它可能有助于指出 SFS 从哪里运行 Java。还要注意对
PATH
的任何更改。 Java 只能在java.library.path
系统属性中加载 DLL,而在 Windows 上,这被设置为PATH
环境变量的值。如果您仍然无法确定 SFS 使用的是 32 位还是 64 位 Java,请尝试使用 Process Explorer 查看运行 SFS 的 java.exe 进程的启动环境。