I am trying to run the following bit of code:
import java.sql.DriverManager;
public class Connect {
public static void main(String[] args){
try{
I had a similar problem and I tried to place the ntlmauth.dll
file in as many directories I thought sql-developer would go looking for it. I finally got it to work by placing the ntlmauth.dll
file in the \jdk\jre\bin
folder in the sql-developer application directory itself (i.e. sql-developer\jdk\jre\bin
). Why would sql-developer look for the ntlmauth.dll in in this folder and not the system folder is beyond my level of understanding. In any case, it worked.
Below is a link to a similar question that I just answered.
Oracle SQL Developer connection to Microsoft SQL Server
I am getting the same error even after successfully placing ntmauth.dll file in JRE/bin.
Then I tried by putting ntmauth.dll
in the C:\Windows\System32
directory. By doing so the issue got fixed.
I got it working by placing the ntlmauth.dll
file at \jdk\jre\bin
. I am using Tomcat as my application server.
However, I noticed that this works for only one web application deployed at a time. If I have the same setting for multiple web applications, all fail but one. This is quite a strange behavior. Any idea what's happening here?
Good job.
But, there's a little problem when deploying your JAR file!
I suggest to create a folder (for example, lib
) and copy all native libraries in. Finally add a Java execution parameter:
java -jar your_jar.jar -Djava.library.path=./lib
This was inspired from JTDS driver not working for SQL Server 2008R2 and Denali Native SSPI library not loaded.
Failing to pass authentication parameters results in the same error, so alternatively to the other answers you can also pass the username and password in the connection string, e.g.
jdbc:jtds:sqlserver://localhost:1433/dbname;user=username;password=s3cr3t
Seems like the same issue as this one: jtds-driver-not-working-for-sql-sever-2008r2-and-denali-native-sspi-library-not
You should drop the appropriate ntlmauth.dll file from the JTDS download package into your JRE bin folder.
If you're running on a 64bit Windows machine:
This 32bit DLL:
Downloads >>> jtds-1.3.0-dist.zip >>> x86 >>> SSO >>> ntlmauth.dll
Goes here in this 32bit JRE location:
C:\Program Files (x86)\Java\jre7\bin
This 64bit DLL:
Downloads >>> jtds-1.3.0-dist.zip >>> x64 >>> SSO >>> ntlmauth.dll
Goes here in this 64bit JRE location:
C:\Program Files\Java\jre7\bin
If you're running on a 32bit Windows machine:
This 32bit DLL:
Downloads >>> jtds-1.3.0-dist.zip >>> x86 >>> SSO >>> ntlmauth.dll
Goes here in this 32bit JRE location:
C:\Program Files\Java\jre7\bin
If that doesn't work then try adding this line at the top of your main method:
System.out.println(java.lang.System.getProperty('java.library.path'));
It should output the actual JRE path being used by your program. Make sure the appropriate ntlmauth.dll is in that JRE's bin folder.
NOTE: Do NOT set the domain, user, or password properties of the connection when utilizing this method.
NOTE: If your Java client program is running on a non-windows machine, you're out of luck using the ntlmauth.dll method. This is a quote from the documentation included with the JTDS download package: Downloads >>> jtds-1.3.0-dist.zip >>> README.SSO
Starting with release 0.9.2 jTDS is capable of using the Windows credentials of the current user under whose account the client program is running to login to SQL Server (Windows Single Sign On).
Using Windows Single Sign On (SSO) clients will be able to connect to Microsoft SQL Server without providing credentials. It would dynamically read current user's credentials and connect to the database. provided that the Windows account has enough rights in the database. This is done using a native (Windows-only) library, ntlmauth.dll.