the sso sata reparar property not net library failed error duro dispositivo disco developer descargar corregir connecting check java sql-server jdbc ioerror
paquete de descarga JTDS

java - sso - jtds sql server 2014



Error de E/S: error de SSO: biblioteca SSPI nativa no cargada (6)

Estoy tratando de ejecutar el siguiente bit de código:

import java.sql.DriverManager; public class Connect { public static void main(String[] args){ try{ String databaseDriver = "net.sourceforge.jtds.jdbc.Driver"; Class.forName(databaseDriver); } catch (Exception e) { e.printStackTrace(); } try{ String url = "jdbc:jtds:sqlserver://BHX:1433/Forecast;instance=SQLEPXRESS"; java.sql.Connection con = DriverManager.getConnection(url); System.out.println("Connection"); } catch (Exception e){ e.printStackTrace(); } } }

Mi servidor SQL se está ejecutando en el puerto 1433 en la máquina BHX.

El mensaje de error que recibo es el siguiente:

java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property. at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:615) at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:352) at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50) at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at Connect.main(Connect.java:14) Caused by: java.io.IOException: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property. at net.sourceforge.jtds.jdbc.TdsCore.sendMSLoginPkt(TdsCore.java:1893) at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:588) ... 6 more

He leído sobre por qué esto generalmente ocurre y encontré una pregunta similar here , pero parece que no funciona. Al ejecutar el código, incluí el siguiente argumento para ubicar el archivo SSO:

-Djava.library.path=/Tester/jdbc/x64/SSO

Y esta es la estructura de mis archivos

**Tester** *src* default package Connect.java *JRE System Library* *jdbc* conf html IA64 x64 SSO ntlmauth.dll x86

¿Puedes ver algo mal?



Lo conseguí trabajando colocando el archivo ntlmauth.dll en /jdk/jre/bin . Estoy usando Tomcat como mi servidor de aplicaciones.

Sin embargo, noté que esto funciona solo para una aplicación web desplegada a la vez. Si tengo la misma configuración para varias aplicaciones web, todas fallan menos una. Este es un comportamiento bastante extraño. ¿Alguna idea de lo que está pasando aquí?


Parece el mismo problema que este: jtds-driver-not-working-for-sql-sever-2008r2-and-denali-native-sspi-library-not

Debería soltar el archivo ntlmauth.dll apropiado del paquete de descarga JTDS en la carpeta bin de JRE.

Si está ejecutando en una máquina con Windows de 64 bits:

  • Este archivo DLL de 32 bits:

    Descargas >>> jtds-1.3.0-dist.zip >>> x86 >>> SSO >>> ntlmauth.dll

  • Va aquí en esta ubicación JRE de 32 bits:

    C: / Archivos de programa (x86) / Java / jre7 / bin

  • Esta DLL de 64 bits:

    Descargas >>> jtds-1.3.0-dist.zip >>> x64 >>> SSO >>> ntlmauth.dll

  • Va aquí en esta ubicación de Jbit de 64 bits:

    C: / Archivos de programa / Java / jre7 / bin

Si está ejecutando en una máquina con Windows de 32 bits:

  • Este archivo DLL de 32 bits:

    Descargas >>> jtds-1.3.0-dist.zip >>> x86 >>> SSO >>> ntlmauth.dll

  • Va aquí en esta ubicación JRE de 32 bits:

    C: / Archivos de programa / Java / jre7 / bin

Si eso no funciona, intente agregar esta línea en la parte superior de su método principal: System.out.println(java.lang.System.getProperty(''java.library.path''));

Debería generar la ruta JRE real que utiliza su programa. Asegúrese de que el ntlmauth.dll apropiado se encuentre en la carpeta bin de ese JRE.

NOTA: NO configure las propiedades de dominio, usuario o contraseña de la conexión cuando utilice este método.

NOTA: Si su programa de cliente Java se ejecuta en una máquina que no es de Windows, no tiene suerte con el método ntlmauth.dll. Esta es una cita de la documentación incluida con el paquete de descarga JTDS: Descargas >>> jtds-1.3.0-dist.zip >>> README.SSO

A partir de la versión 0.9.2, jTDS puede usar las credenciales de Windows del usuario actual bajo cuya cuenta se ejecuta el programa cliente para iniciar sesión en SQL Server (inicio de sesión único de Windows).

Al usar Windows Single Sign On (SSO), los clientes podrán conectarse a Microsoft SQL Server sin proporcionar credenciales. Leería dinámicamente las credenciales del usuario actual y se conectaría a la base de datos. siempre que la cuenta de Windows tenga suficientes derechos en la base de datos. Esto se hace usando una biblioteca nativa (solo Windows), ntlmauth.dll.


Recibo el mismo error incluso después de colocar con éxito el archivo ntmauth.dll en JRE / bin.

Entonces probé poniendo ntmauth.dll en el directorio C:/Windows/System32 . Al hacerlo, el problema se solucionó.


Si no se pasan los parámetros de autenticación, se produce el mismo error, por lo que alternativamente a las otras respuestas también se puede pasar el nombre de usuario y la contraseña en la cadena de conexión, por ejemplo

jdbc:jtds:sqlserver://localhost:1433/dbname;user=username;password=s3cr3t


Tuve un problema similar e intenté ubicar el archivo ntlmauth.dll en tantos directorios que pensé que sql-developer lo buscaría. Finalmente conseguí que funcione al colocar el archivo ntlmauth.dll en la /jdk/jre/bin en el directorio de la aplicación sql-developer (es decir, sql-developer/jdk/jre/bin ). ¿Por qué sql-developer buscar el ntlmauth.dll en esta carpeta y no la carpeta del sistema está más allá de mi nivel de comprensión. En cualquier caso, funcionó.

A continuación hay un enlace a una pregunta similar que acabo de responder.

Conexión Oracle SQL Developer a Microsoft SQL Server