JDBC SQLServerException: "Questo driver non è configurato per l'autenticazione integrata."
-
09-09-2020 - |
Domanda
Sto scrivendo una "estensione lato server" per smartfoxserver (sfs).Nel mio script di accesso, ho bisogno di creare una connessione a MS SQL Server, che sto tentando di utilizzare JDBC.Ho testato il codice JDBC nel mio ambiente di debug e funziona bene.
ma
Quando metto l'estensione lato server nella cartella "Extensions" SFS (come da specifica), sto ottenendo un com.microsoft.sqlserver.jdbc.SQLServerException
:
."Questo driver non è configurato per l'autenticazione integrata.".
I Googled per questo errore e ho scoperto che di solito è perché il file sqljdbc_auth.dll
non è nel percorso del sistema;Ho copiato questo file in una cartella nel mio percorso di sistema, e ancora non funziona!
Qualche altro suggerimento?
Soluzione
Ci sono diverse versioni di SQLJDBC_Auth.dll per diverse architetture del processore (X86 / X64 / IA64). Quale stai usando sul tuo server SFS?
È necessario scegliere quello in cui corrispondere all'architettura del JVM sotto il quale è in esecuzione SFS. Quindi, se stai eseguendo Java a 32 bit su una macchina a 64 bit, ti serve la versione x86, non la versione X64.
Non ho usato SFS prima, quindi non so se scrive i registri ovunque. Se lo fa, potrebbe valere la pena dare un'occhiata a questi tronchi per vedere se è stato scritto qualcosa di utile.
Modifica : Non posso essere sicuro al 100% che SFS utilizza Java a 64 bit solo perché funziona da C: \ Programmi Programmi al contrario di C: \ Programmi (X86) .
Ho trovato la seguente riga in Documenti SFS in Introduzione> Requisiti e installazione. Mentre questa linea si applica solo a Linux al contrario di Windows, potrebbe suggerire che SFS su Windows utilizza anche Java a 32 bit:
.Dal momento che la versione 1.5 SmartFoxserver è dotata del suo runtime Sun Java X86 a 32 bit.
Un modo rapido per determinare quale versione (s) di Java hai installato è, fornire il seguente comando nel tuo cmd: Java -version
Visualizzerà quanto segue alla console:
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)
.
Qui, puoi vedere il tipo di bit della versione Java installata.
La tua applicazione funziona se si utilizza la versione x86 di sqljdbc_auth.dll anziché la versione x64? Se inizia improvvisamente a lavorare con la DLL X86, quindi SFS deve utilizzare Java a 32 bit.
C'è un file batch utilizzato per avviare SFS? In tal caso, la lettura di ciò potrebbe aiutare a sottolineare dove è in esecuzione SFS in esecuzione Java. Guarda anche qualsiasi modifica al PATH
. Java può solo caricare DLL nella proprietà del sistema java.library.path
e su Windows, questo è impostato sul valore della variabile di ambiente PATH
.
Se non è ancora possibile determinare se SFS utilizza Java a 32 o 64 bit, provare a utilizzare Process Explorer per esaminare l'ambiente in cui il processo Java.exe in esecuzione SFS è stato avviato con.
Altri suggerimenti
Quando si utilizza la sicurezza integrata dell'autenticazione di Windows
- .
- Scarica il SQLJDBC_6.0.8112.100_Enu.exe da Microsoft Sito
- Installa l'exe (leggi le istruzioni nel percorso zip)
-
copia sqljdbc_4.0 / enu / auth / x64 / sqljdbc_auth.dll a
java / jre7 / bin e a
java / jre7 / lib
Dopo questo Youj dovrebbe essere in grado di connettersi agli strumenti di ibernazione per estrarre il database negli strumenti di dati
Place .dll file nella tua cartella JRE: -
Stavo anche affrontando lo stesso problema e dopo averlo inserito sqljdbc_auth.dll (x86 o x64) a seconda del sistema operativo nella cartella JRE I.e jre7 / bin / file.dll e quindi esegui la mia applicazione.jar e ha funzionato perfettamente.Questo ha funzionato per me puoi anche provare questo può anche aiutarti a te :)
Scarica il driver JDBC (Ver 7.2) da Microsoft e copia il SQLJDBC_Auth.dll a C: \ Programmi \ Java \ Jre \ Bin e C: \ Programmi \ Java \ jdk \ bincartella.Vai alla cartella dei file di programma (X86) se stai eseguendo Java a 32 bit.
In my case, I did the following to resolve:
Downloaded the Microsoft JDBC Driver 8.2 for SQL Server (zip) (found here - https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15).
Then in the zip file, I went into the following folders:
sqljdbc_8.2 > enu > auth > x64
and the copied "mssql-jdbc_auth-8.2.2.x64.dll" to C:\Program Files\Java\jdk-12.0.1\bin
i had faced same issue for the following windows authentication string
jdbc:sqlserver://host:1433;integratedSecurity=true
the default authenticationScheme=NativeAuthentication, So it might depends on some microsoft dlls. To fix it, the update authenticationScheme as NTLM as below
jdbc:sqlserver://host:1433;authenticationScheme=NTLM;integratedSecurity=true;domain=myDomain
note: username given was without domain