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

我的标准免责声明:我在大约10年内没有使用Java,所以我很可能在这里做了一些基本错误。

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

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

“此驱动程序未配置为集成身份validation。”

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

还有其他建议吗?

对于不同的处理器体系结构,有不同版本的sqljdbc_auth.dll(x86 / x64 / ia64)。 您在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版本的一种快速方法是查看文件夹C:\Program Files\JavaC:\Program Files (x86)\Java存在其中一个或两个。 当然,如果两个文件夹都存在,那对你没什么帮助。

如果您使用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进程启动的环境。

使用Windows身份validation集成安全性时

  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

    的Java / jre7 / lib目录

在此之后,您应该能够连接到hibernate工具以在Data Tools中提取数据库

将.dll文件放在您的JRE文件夹中: –
我也遇到了同样的问题,然后根据你在JRE文件夹中的操作系统,即jre7 / bin / file.dll放置了sqljdbc_auth.dll(x86或x64),然后运行我的application.jar,它运行得很好。 这对我有用,你也可以尝试这可能这也有助于你:)