Reputation: 1486
I am currently working with SQL in Java. Recently I got this error:
com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
This happens when I add the parameter integratedSecurity=true;
in the connection String.
The error message clearly says that sqljdbc_auth.dll is missing, so I tried to put the dll in the same path as I keep sqljdbc4.jar.
However, this doesn't work, so I wanted to know how I actually can add this dll to my build path? Is there a special way to do it?
Upvotes: 22
Views: 131281
Reputation: 694
In my case after spending many days on this issues a gentleman help on this issue below is the solution and it worked for me. Issue: While trying to connect SqlServer DB with Service account authentication using spring boot it throws below exception.
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:ab942951-31f6-44bf-90aa-7ac4cec2e206 at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2392) ~[mssql-jdbc-6.1.0.jre8.jar!/:na] Caused by: java.lang.UnsatisfiedLinkError: sqljdbc_auth (Not found in java.library.path) at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1462) ~[na:2.9 (04-02-2020)] Solution: Use JTDS driver with the following steps
Use JTDS driver insteadof sqlserver driver.
datasource.dedicatedpicup.url=jdbc:jtds:sqlserver://YourSqlServer:PortNo/DatabaseName;instance=InstanceName;domain=DomainName
datasource.dedicatedpicup.jdbcUrl=${datasource.dedicatedpicup.url}
datasource.dedicatedpicup.username=$da-XYZ
datasource.dedicatedpicup.password=ENC(XYZ)
datasource.dedicatedpicup.driver-class-name=net.sourceforge.jtds.jdbc.Driver
Remove Hikari in configuration properties.
#datasource.dedicatedpicup.hikari.connection-timeout=60000 #datasource.dedicatedpicup.hikari.maximum-pool-size=5
Add sqljdbc4 dependency.
com.microsoft.sqlserver sqljdbc4 4.0Add Tomcatjdbc dependency.
org.apache.tomcat tomcat-jdbcExclude HikariCP from spring-boot-starter-jdbc dependency.
org.springframework.boot spring-boot-starter-jdbc com.zaxxer HikariCPUpvotes: 2
Reputation: 712
For easy fix follow these steps:
restart either eclipse or netbeans
Upvotes: 12
Reputation: 1338
The sqljdbc_auth.dll is within the sqljdbc_x.x folder you install to retrieve the sqljdbcxx.jar file in the auth folder. Create a lib folder at the base of your scala project and move sqljdbc_auth.dll into this folder. This makes sure that you are getting the correct file, e.g. 64 bit or 32 bit that matches your sqljdbcxx.jar file.
Upvotes: 0
Reputation: 21
Friends I had the same problem because of the different bit version Make sure following point * Your jdk bit 64 or 32 * Your Path for sqljdbc_4.0\enu\auth\x64 or x86 this directory depend on your jdk bit * sqljdbc_auth.dll select this file based on your bit x64 or x86 and put this in system32 folder and it will works for me
Upvotes: 0
Reputation: 31
If its the case of the dll file missing you can download the dll file from this link http://en.osdn.jp/projects/sfnet_dose-grok/downloads/sqljdbc_auth.dll/
else you need to provide the username and password of the db you are trying to connect, and make the authentication as false
Upvotes: 2
Reputation: 13854
keep sqljdbc_auth.dll
in your windows/system32 folder and it will work.Download sqljdbc driver from this link Unzip it and you will find sqljdbc_auth.dll
.Now keep the sqljdbc_auth.dll
inside system32 folder and run your program
Upvotes: 45
Reputation: 1486
Alright guys, I found it out! I didn't really need to change the java.library.path but the "Native library location" of sqljdbc.jar
This is the best answer I could find: https://stackoverflow.com/a/958074/2000342
It works now, thanks for the support!
Upvotes: 10
Reputation: 2604
Set java.library.path to a directory containing this DLL which Java uses to find native libraries. Specify -D switch on the command line
java -Djava.library.path=C:\Java\native\libs YourProgram
C:\Java\native\libs should contain sqljdbc_auth.dll
Look at this SO post if you are using Eclipse or at this blog if you want to set programatically.
Upvotes: 4
Reputation: 34321
You need to set a -D system property called java.library.path
that points at the directory containing the sqljdbc_auth.dll
.
Upvotes: 4
Reputation: 4239
You have to make sure your DLL is in the classpath.
One such way to do so is to put the path to the DLL in PATH environment variable.
Other option is to add it to the VM arguments in the variable LD_LIBRARY_PATH, like this:
java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass
Upvotes: 0