问诊病历
很多时候系统还是用MS SqlServer作为后台数据库,在设置其数据库资源池连接时,基本上都不再直接使用用户名密码方式,因为安全性太差,而会连接选择使用集成身份验证(Kerberos连接)。但这种方式有时候可能有错误,比如下面的错误描述
This driver is not configured for integrated authentication. ClientConnectionId
和
no mssql-jdbc_auth-9.2.1.x64 in java.library.path:
Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
详细错误信息
错误跟踪跟踪可能如下所示
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:f965454c-897b-4707-a625-52506e450878
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:3206) ~[mssql-jdbc-9.2.1.jre8.jar:na]
at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<init>(AuthenticationJNI.java:72) ~[mssql-jdbc-9.2.1.jre8.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:4015) ~[mssql-jdbc-9.2.1.jre8.jar:na]
Caused by: java.lang.UnsatisfiedLinkError: no mssql-jdbc_auth-9.2.1.x64 in java.library.path: [C:\soft\java-11-openjdk-11.0.11.9-1.windows.redhat.x86_64\bin, C:\WINDOWS\Sun\Java\bin, C:\WINDOWS\system32, C:\WINDOWS, C:\Python39\Scripts\, C:\Python39\, C:\Program Files (x86)\RSA SecurID Token Common, C:\WINDOWS\system32, C:\WINDOWS, C:\WINDOWS\System32\Wbem, C:\WINDOWS\System32\WindowsPowerShell\v1.0\, C:\WINDOWS\System32\OpenSSH\, C:\Program Files\Git\cmd, c:\dev\scripts\, c:\dev\apache-maven-3.8.1\\bin, C:\Minikube, C:\Soft\nodejs\, C:\ProgramData\chocolatey\bin, C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\, C:\Program Files\Azure Data Studio\bin, C:\Program Files\Docker\Docker\resources\bin, C:\ProgramData\DockerDesktop\version-bin, C:\Program Files\dotnet\, C:\ProgramData\Riverbed\ProcessInjection\rpictrlBin, C:\soft\java\java-11-openjdk-11.0.11.9-1.windows.redhat.x86_64\bin, C:\Program Files (x86)\sbt\bin, C:\Program Files (x86)\scala\bin, C:\Program Files\PowerShell\7\, C:\WINDOWS\system32, C:\WINDOWS, C:\WINDOWS\System32\Wbem, C:\WINDOWS\System32\WindowsPowerShell\v1.0\, C:\WINDOWS\System32\OpenSSH\, C:\Users\XXX\AppData\Local\Microsoft\WindowsApps, C:\soft\JetBrains\IntelliJ IDEA 2021.1.3\bin, ., c:\ProgramData\chocolatey\lib\gradle\tools\gradle-7.2\\bin, C:\soft\Microsoft VS Code\bin, C:\Users\XXX\AppData\Roaming\npm, C:\Program Files\Azure Data Studio\bin, C:\soft\java-11-openjdk-11.0.11.9-1.windows.redhat.x86_64\bin, ., C:\soft\JetBrains\IntelliJ IDEA Educational Edition 2021.2.3\bin, ., C:\soft\JetBrains\IntelliJ IDEA Community Edition 2021.2.3\bin, ., .]
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2670) ~[na:na]
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830) ~[na:na]
at java.base/java.lang.System.loadLibrary(System.java:1873) ~[na:na]
at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<clinit>(AuthenticationJNI.java:51) ~[mssql-jdbc-9.2.1.jre8.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:4014) ~[mssql-jdbc-9.2.1.jre8.jar:na]
... 46 common frames omitted
2021-11-24 16:11:58.244 WARN 38084 --- [ main] c.m.s.jdbc.internals.AuthenticationJNI : Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path: [C:\soft\java-11-openjdk-11.0.11.9-1.windows.redhat.x86_64\bin, C:\WINDOWS\Sun\Java\bin, C:\WINDOWS\system32, C:\WINDOWS, C:\Python39\Scripts\, C:\Python39\, C:\Program Files (x86)\RSA SecurID Token Common, C:\WINDOWS\system32, C:\WINDOWS, C:\WINDOWS\System32\Wbem, C:\WINDOWS\System32\WindowsPowerShell\v1.0\, C:\WINDOWS\System32\OpenSSH\, C:\Program Files\Git\cmd, c:\dev\scripts\, c:\dev\apache-maven-3.8.1\\bin, C:\Minikube, C:\Soft\nodejs\, C:\ProgramData\chocolatey\bin, C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\, C:\Program Files\Azure Data Studio\bin, C:\Program Files\Docker\Docker\resources\bin, C:\ProgramData\DockerDesktop\version-bin, C:\Program Files\dotnet\, C:\ProgramData\Riverbed\ProcessInjection\rpictrlBin, C:\soft\java\java-11-openjdk-11.0.11.9-1.windows.redhat.x86_64\bin, C:\Program Files (x86)\sbt\bin, C:\Program Files (x86)\scala\bin, C:\Program Files\PowerShell\7\, C:\WINDOWS\system32, C:\WINDOWS, C:\WINDOWS\System32\Wbem, C:\WINDOWS\System32\WindowsPowerShell\v1.0\, C:\WINDOWS\System32\OpenSSH\, C:\Users\XXX\AppData\Local\Microsoft\WindowsApps, C:\soft\JetBrains\IntelliJ IDEA 2021.1.3\bin, ., c:\ProgramData\chocolatey\lib\gradle\tools\gradle-7.2\\bin, C:\soft\Microsoft VS Code\bin, C:\Users\XXX\AppData\Roaming\npm, C:\Program Files\Azure Data Studio\bin, C:\soft\java-11-openjdk-11.0.11.9-1.windows.redhat.x86_64\bin, ., C:\soft\JetBrains\IntelliJ IDEA Educational Edition 2021.2.3\bin, ., C:\soft\JetBrains\IntelliJ IDEA Community Edition 2021.2.3\bin, ., .]
根本原因
这是Microsoft JDBC库身份验证模块中的“写死的”逻辑代码。Downlaoded auth文件将命名为mssql-jdbc_auth-9.4.0.x64.dll,必须重命名为sqljdbc_auth.dll并保存到%JAVA_HOME%\bin文件夹
解决方案
- 首先从Microsoft文件夹下载文件,如下所示
https://docs.microsoft.com/zh-cn/sql/connect/jdbc/release-notes-for-the-jdbc-driver?view=sql-server-ver15
然后解压并复制文件夹“auth”下的文件
最后,复制您的平台莳萝文件(例如mssql-jdbc_auth-9.4.0.x64.dll),并重命名为sqljdbc_auth.dll

希望这个有所帮助。
也欢迎浏览我的网站www.todzhang.com,有更多类似文章
–结束–
文章转载自竹书纪年的IT男,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




