JDBC SQLServerException:“此驱动程序未配置为集成身份验证。”

新手上路,请多包涵

我正在为 SmartFoxServer (SFS) 编写一个“服务器端扩展”。在我的登录脚本中,我需要连接到 MS SQL Server,我正在尝试使用 JDBC 进行连接。我已经在我的调试环境中测试了 JDBC 代码,它工作正常。

当我将服务器端扩展放在 SFS“扩展”文件夹中时(根据规范),我得到了 com.microsoft.sqlserver.jdbc.SQLServerException

“此驱动程序未配置集成身份验证。”。

我用Google搜索了这个错误,发现通常是因为文件 sqljdbc_auth.dll 不在系统路径中;我已经将这个文件复制到我的系统路径下的一个文件夹中,但仍然不起作用!

还有其他建议吗?

原文由 Shaul Behr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

针对不同的处理器架构 (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 运行时。

确定您安装的 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版本的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 进程的启动环境。

原文由 Luke Woodward 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 Windows 身份验证集成安全性时

  1. 从 Microsoft 站点下载 sqljdbc_6.0.8112.100_enu.exe
  2. 安装 exe(阅读 zip 路径中的说明)
  3. 复制sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll到

Java/jre7/bin 和 to

Java/jre7/库

在此之后 youj 应该能够连接到休眠工具以在 Data Tools 中拉取数据库

原文由 Pavan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题