52

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

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

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

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

还有其他建议吗?

4

11 回答 11

35

使用 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

    Java/jre7/lib

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

于 2017-08-21T17:20:02.590 回答
27

不同的处理器架构 (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 版本的位类型。

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

于 2011-05-22T12:26:52.193 回答
13

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

于 2015-12-01T09:46:49.600 回答
11

就我而言,我执行了以下操作来解决:

下载 Microsoft JDBC Driver 8.2 for SQL Server (zip)(在此处找到 - https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?视图=sql-server-ver15)。

然后在 zip 文件中,我进入以下文件夹:

sqljdbc_8.2 > enu > auth > x64

并将“mssql-jdbc_auth-8.2.2.x64.dll”复制到 C:\Program Files\Java\jdk-12.0.1\bin

于 2020-07-30T15:52:30.340 回答
7

从 Microsoft 下载 jdbc 驱动程序(7.2 版)并将sqljdbc_auth.dll复制到 C:\Program Files\Java\jre\bin 和 C:\Program Files\Java\jdk\bin 文件夹。如果您正在运行 Java 32 位,您将转到 Program Files (x86) 文件夹。

于 2019-05-03T06:04:18.427 回答
7

对于以下 Windows 身份验证字符串,我遇到了同样的问题

jdbc:sqlserver://host:1433;integratedSecurity=true

默认 authenticationScheme=NativeAuthentication,所以它可能取决于一些 microsoft dll。要修复它,请将 authenticationScheme 更新为 NTLM,如下所示

jdbc:sqlserver://host:1433;authenticationScheme=NTLM;integratedSecurity=true;domain=myDomain

注意:给定的用户名没有域

于 2020-09-07T07:47:18.030 回答
1

我有一个类似的问题,我将 .dll 文件的位置放在 pom.xml 下

<配置>

<argLine> -Djava.library.path="C:\* \\ **"<argLine>

这对我有用

于 2020-10-22T20:39:23.933 回答
1

这对我有用:

下载 Microsoft JDBC Driver for SQL Server 并提取内容。在那里你会找到一个sqljdbc_auth.dllfrom Microsoft JDBC Driver x.x for SQL Server\sqljdbc_x.x\enu\auth\x64。将该文件复制到System32Windows 的文件夹中。

现在测试连接。

于 2020-12-18T18:30:00.140 回答
1

我对这里的其他答案略有不同,无论是在术语还是可能需要将什么文件(名称)复制到一个特殊的地方,以及应该复制到哪里。(它并不总是会是 sqljdbc_auth.dll,也不总是被放置在您的公共 JRE 的 jre/bin 中。更多内容如下。

首先,在 MS SQL Server 驱动程序的更高版本中,我发现文件名不是 sqljdbc_auth.dll 而是 mssql-jdbc_auth-8.4.1.x64.dll (当然是在特定的最新版本中)。至于文件的确切名称(如果您还没有文件,在哪里寻找它),它将是您从 MS 下载的 zip 中找到的任何内容。

具体来说,在我的情况下,该 zip 是 sqljdbc_8.4.1.0_enu.zip,并且在 sqljdbc_8.4\enu\auth\x64 中找到了 dll(因为我在 64 位 Windows 上运行并计划实现 DLL在我的 64 位 JVM 中)。

其次,至于该文件需要放在我的机器上的什么位置,虽然这里的许多人可以理解地建议将它放在诸如 Windows system32 或任何他们的公共 JRE 的 jre/bin 之类的地方(并且这可能对他们有用),但它对我不起作用。

就我而言,我正在使用的应用服务器(例如 Tomcat)被配置为在我的机器上使用特定的 JVM/JRE。我需要把这个 DLL 放到那个 JVM 的 jre/bin 文件夹中(或者只是 bin 文件夹,如果是 Java 11 及更高版本,默认情况下是作为 JRE 实现的)。

然后重新启动您的应用服务器(或 JVM)。

于 2021-01-11T04:21:12.167 回答
0

对于因为此错误出现在他们的 Cognos 日志中而来到这里的任何人,(cognosserver.log)

您需要将 64 位版本复制sqljdbcauth.dllD:\Program Files\IBM\Cognos\Analytics\bin64

您需要将 32 位版本复制sqljdbcauth.dllD:\Program Files\IBM\Cognos\Analytics\bin

当我将工作安装 (11.1.3) 升级到更新版本 (11.1.7) 时,它删除了这些文件很有帮助。

当然,在 doco 的任何地方都没有提到。它只谈论install_location\drivers文件夹

于 2021-01-11T05:08:30.320 回答
0

我已经c:\full-path\mssql-jdbc_auth-9.2.1.x64.dllCLASSPATH(windows 环境)中包含了 这个概念类似于 om.xmlusing 指令的概念:-Djava.library.path="C:\*\\**"

于 2021-04-29T03:17:41.140 回答