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?

È stato utile?

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

    .
  1. Scarica il SQLJDBC_6.0.8112.100_Enu.exe da Microsoft Sito
  2. Installa l'exe (leggi le istruzioni nel percorso zip)
  3. copia sqljdbc_4.0 / enu / auth / x64 / sqljdbc_auth.dll a

    java / jre7 / bin e a

    java / jre7 / lib

  4. 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top