JDBC SQLServerException:„Dieser Treiber ist nicht für die integrierte Authentifizierung konfiguriert.“

StackOverflow https://stackoverflow.com/questions/6087819

Frage

Ich schreibe eine „serverseitige Erweiterung“ für SmartFoxServer (SFS).In meinem Anmeldeskript muss ich eine Verbindung zu MS SQL Server herstellen, was ich mithilfe von JDBC versuche.Ich habe den JDBC-Code in meiner Debug-Umgebung getestet und er funktioniert einwandfrei.

ABER

Wenn ich die serverseitige Erweiterung im SFS-Ordner „extensions“ ablege (gemäß Spezifikation), erhalte ich eine com.microsoft.sqlserver.jdbc.SQLServerException:

„Dieser Treiber ist nicht für die integrierte Authentifizierung konfiguriert.“

Ich habe nach diesem Fehler gegoogelt und festgestellt, dass er normalerweise an der Datei liegt sqljdbc_auth.dll ist nicht im Systempfad;Ich habe diese Datei in einen Ordner in meinem Systempfad kopiert und es funktioniert immer noch nicht!

Irgendwelche anderen Vorschläge?

War es hilfreich?

Lösung

Es gibt verschiedene Versionen von sqljdbc_auth.dll für verschiedene Prozessorarchitekturen (x86/x64/ia64).Welches verwenden Sie auf Ihrem SFS-Server?

Sie müssen diejenige auswählen, die zur Architektur der JVM passt, unter der SFS ausgeführt wird.Wenn Sie also 32-Bit-Java auf einem 64-Bit-Computer ausführen, benötigen Sie die x86-Version, nicht die x64-Version.

Ich habe SFS noch nie verwendet, daher weiß ich nicht, ob es irgendwo Protokolle schreibt.Wenn dies der Fall ist, könnte es sich lohnen, einen Blick auf diese Protokolle zu werfen, um zu sehen, ob dort etwas Hilfreiches geschrieben wurde.

BEARBEITEN:Ich kann nicht 100 % sicher sein, dass SFS 64-Bit-Java verwendet, nur weil es nicht über C:\Programme und nicht über C:\Programme (x86) verfügt.

Ich habe die folgende Zeile im gefunden SFS-Dokumente unter Einführung > Anforderungen und Installation.Während diese Zeile nur für Linux und nicht für Windows gilt, könnte sie darauf hindeuten, dass SFS unter Windows auch 32-Bit-Java verwendet:

Seit Version 1.5 verfügt SmartFoxServer über eine eigene x86 32-Bit Sun Java Runtime.

Eine schnelle Möglichkeit, festzustellen, welche Java-Version(en) Sie installiert haben, besteht darin, den folgenden Befehl in Ihr cmd einzugeben: Java -version

Auf der Konsole wird Folgendes angezeigt:

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)

Hier können Sie den Bittyp der installierten Java-Version sehen.

Funktioniert Ihre Anwendung, wenn Sie die x86-Version von sqljdbc_auth.dll anstelle der x64-Version verwenden?Wenn es plötzlich mit der x86-DLL funktioniert, muss SFS 32-Bit-Java verwenden.

Gibt es eine Batch-Datei zum Starten von SFS?Wenn ja, kann das Durchlesen hilfreich sein, um herauszufinden, von wo aus SFS Java ausführt.Achten Sie auch auf Änderungen an der PATH.Java kann nur DLLs in laden java.library.path Systemeigenschaft, und unter Windows wird diese auf den Wert der festgelegt PATH Umgebungsvariable.

Wenn Sie immer noch nicht feststellen können, ob SFS 32-Bit- oder 64-Bit-Java verwendet, versuchen Sie, mit Process Explorer die Umgebung zu überprüfen, in der der Prozess java.exe, auf dem SFS ausgeführt wird, gestartet wurde.

Andere Tipps

wenn Sie Windows-Authentifizierung integrierte Sicherheit verwenden

    .
  1. Download der sqljdbc_6.0.8112.100_enu.exe von Microsoft Site
  2. Installieren Sie den EXE (lesen Sie die Anweisungen im Reißverschluss)
  3. Kopieren sqljdbc_4.0 / deu / auth / x64 / sqljdbc_auth.dll bis

    java / jre7 / bin und zu

    java / jre7 / lib

  4. Danach sollten Sie in der Lage sein, mit den Hibernate-Tools herzustellen, um die Datenbank in Datenwerkzeugen zu ziehen

platz .dll-Datei in Ihrem JRE-Ordner: -
Ich stand auch auf das gleiche Problem und danach legte ich SQLJDBC_AUTH.DLL (X86 oder X64) abhängig von Ihrem Betriebssystem in JRE-Ordner i.E jre7 / bin / file.dll und führen Sie dann meinen Application.jar und es funktionierte perfekt.Dies funktionierte für mich, Sie können dies auch ausprobieren, kann dies auch helfen :)

Laden Sie den JDBC-Treiber (ver 7.2) von Microsoft herunter und kopieren Sie die sqljdbc_auth.dll in c: \ programmdateien \ java \ jre \ bin und c: \ Programme \ java \ jdk \ binMappe.Sie würden den Ordner zum Programmdateien (X86) gehen, wenn Sie Java 32-Bit ausführen.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top