java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library sql sql

java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library


I got past this by changing the url from

jdbc:jtds:sqlserver://host_server:1433/Database_name

to

jdbc:jtds:sqlserver://host_server:1433/Database_name;user=XXX;password=YYY

Apparently, "When URL [does] not contains user and password properties, systems uses Windows authentication method, and "SSPI Native library not found" error appears."


This is the solution:

Download the jTDS driver, unzip it, and copy x86\SSO\ntlmauth.dll to jdk\jre\bin.

This should solve your issue.

Edit:

Without the JDK installed the path for me was C:\Program Files\Java\jre7\bin\ntlmauth.dll

jTDS must be able to load the native SPPI library (ntlmauth.dll). Place this DLL anywhere in the system path (defined by the PATH system variable) and you're all set.


If you are trying to run two (or more) Tomcat applications on the same server that both access a SQL Server using the JTDS driver and windows authentication, a very helpful answer courtesy of Chris White is here.

Chris' answer has to do with sqljdbc_auth.dll, but the recommendations are the same for the JTDS driver and ntlmauth.dll:

  1. Put ntlmauth.dll into the tomcat 7.0\bin directory. Actually, I believe you can put ntlmauth.dll into any directory in the system path, or the Java jre\bin directory.
  2. Importantly, don't bundle the JTDS jar in the war file of any Tomcat application using the JTDS driver. Instead, put one copy in the Tomcat\lib directory, where Tomcat will load it and make it available to all apps.