Pregunta

Estoy escribiendo un "extensiones del lado del servidor" para SmartFoxServer (SFS).En mi script de inicio de sesión, necesito hacer una conexión a MS SQL Server, lo que yo estoy tratando de hacer uso de JDBC.He probado el código JDBC en mi entorno de depuración, y funciona bien.

PERO

Cuando me pongo en el lado del servidor de extensión en el SFS carpeta "extensiones" (según especificación), me estoy poniendo un com.microsoft.sqlserver.jdbc.SQLServerException:

"Este controlador no está configurado para la autenticación integrada.".

Busqué en Google por este error, y se encontró que es generalmente porque el archivo sqljdbc_auth.dll no está en la ruta de acceso del sistema;He copiado este archivo en una carpeta en mi ruta de acceso del sistema, y todavía no funciona!

Otras sugerencias?

¿Fue útil?

Solución

Hay diferentes versiones de sqljdbc_auth.dll para diferentes arquitecturas de procesador (x86/x64/ia64).Que se está utilizando en su SFS servidor?

Usted debe elegir uno para que coincida con la arquitectura de la JVM en virtud de la cual SFS se está ejecutando.Por lo tanto, si usted está ejecutando Java de 32 bits en una máquina de 64 bits, usted necesitará la versión x86, no la versión x64.

No he usado SFS antes, así que no sé si se escribe todos los registros en cualquier lugar.Si lo hace, podría valer la pena echar un vistazo a estos registros para ver si hay algo útil que ha sido escrito para ellos.

EDITAR:No puedo estar 100% seguro de que el SFS es el uso de Java de 64 bits sólo porque se ejecuta fuera de los C:\Program Archivos en contraposición a C:\Program Files (x86).

He encontrado la siguiente línea en el SFS docs en virtud de la Introducción > la Instalación y los Requisitos.Mientras que esta línea sólo se aplica a Linux frente a Windows, se podría sugerir que el SFS en Windows también se utiliza Java de 32 bits:

Desde la versión 1.5 SmartFoxServer viene con su propio x86 de 32 bits de Java de Sun en tiempo de ejecución.

Una forma rápida de determinar qué versión de Java tienes instalada es, dar el siguiente comando en el cmd: Java -version

Se mostrará lo siguiente en la consola:

C:\Users\967097>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Aquí,usted puede ver el tipo de bit de la versión de java instalada.

Hace su trabajo de la aplicación si se utiliza la versión x86 de sqljdbc_auth.dll en lugar de la versión de 64 bits?Si de repente empieza a trabajar con la DLL x86, entonces SFS debe ser el uso de Java de 32 bits.

Hay un lote de archivos se utiliza para iniciar SFS?Si es así, la lectura a través de que podría ayudar a señalar dónde SFS está ejecutando Java.También mirar hacia fuera para los cambios a los PATH.Java sólo se puede cargar la Dll en el java.library.path la propiedad del sistema, en Windows, este se establece en el valor de la PATH la variable de entorno.

Si usted todavía no puede determinar si SFS está usando 32 bits o de 64 bits de Java, trate de usar Process Explorer para buscar en el entorno de la java.exe proceso de ejecución de SFS se inició con.

Otros consejos

Cuando se utiliza la seguridad integrada de autenticación de Windows

  1. Descargar el sqljdbc_6.0.8112.100_enu.exe del sitio de Microsoft
  2. Instale el exe (lea las instrucciones en la ruta zip)
  3. copie sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll a

    Java/jre7/bin y para

    Java/jre7/lib

Después de esto, debería poder conectarse a las herramientas de hibernación para extraer la base de datos en Herramientas de datos.

                                                            Coloque el archivo .dll en su carpeta JRE: –
También estaba enfrentando el mismo problema y luego coloqué sqljdbc_auth.dll (x86 o x64) dependiendo de su sistema operativo en la carpeta JRE, es decir, jre7/bin/file.dll y luego ejecuté mi application.jar y funcionó perfectamente.Esto funcionó para mí, también puedes probar esto, puede que esto también te ayude :)

Descargue el controlador jdbc (ver 7.2) de Microsoft y copie el sqljdbc_auth.dll a la carpeta C:\Program Files\Java\jre\bin y C:\Program Files\Java\jdk\bin.Iría a la carpeta Archivos de programa (x86) si está ejecutando Java de 32 bits.

En mi caso, hice lo siguiente para resolver:

Descargué el controlador Microsoft JDBC 8.2 para SQL Server (zip) (que se encuentra aquí: https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15).

Luego en el archivo zip, entré a las siguientes carpetas:

sqljdbc_8.2 > enu > autenticación > x64

y el "mssql-jdbc_auth-8.2.2.x64.dll" copiado en C:\Program Files\Java\jdk-12.0.1\bin

Me enfrenté al mismo problema con la siguiente cadena de autenticación de Windows.

jdbc:sqlserver://host:1433;integratedSecurity=true

el esquema de autenticación predeterminado = NativeAuthentication, por lo que podría depender de algunas DLL de Microsoft.Para solucionarlo, actualice el esquema de autenticación como NTLM como se muestra a continuación

jdbc:sqlserver://host:1433;authenticationScheme=NTLM;integratedSecurity=true;domain=myDomain

nota:el nombre de usuario proporcionado no tenía dominio

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top