it-swarm.com.de

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

Ich schreibe eine "serverseitige Erweiterung" für SmartFoxServer (SFS). In meinem Anmeldeskript muss ich eine Verbindung zu MS SQL Server herstellen, was ich mit JDBC versuchen möchte. Ich habe den JDBC-Code in meiner Debug-Umgebung getestet und er funktioniert einwandfrei.

ABER

Wenn ich die serverseitige Erweiterung in den SFS-Ordner "extensions" lege (gemäß Spezifikation), erhalte ich ein com.Microsoft.sqlserver.jdbc.SQLServerException:

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

Ich habe nach diesem Fehler gegoogelt und festgestellt, dass dies normalerweise daran liegt, dass die Datei sqljdbc_auth.dll befindet sich nicht im Systempfad; Ich habe diese Datei in einen Ordner in meinem Systempfad kopiert und es funktioniert immer noch nicht!

Irgendwelche anderen Vorschläge?

29
Shaul Behr

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 der Architektur der JVM entspricht, 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 zuvor noch kein SFS verwendet, daher weiß ich nicht, ob es irgendwo Protokolle schreibt. In diesem Fall lohnt es sich möglicherweise, in diesen Protokollen nachzuschauen, ob hilfreiche Informationen vorliegen.

[~ # ~] edit [~ # ~] : Ich kann nicht 100% sicher sein, dass SFS 64-Bit verwendet Java nur weil es nicht mehr über C:\Programme im Gegensatz zu C:\Programme (x86) verfügt.

Ich fand die folgende Zeile in den SFS-Dokumenten unter Einführung> Anforderungen und Installation. Während diese Zeile nur für Linux im Gegensatz zu Windows gilt, könnte dies darauf hindeuten, dass SFS unter Windows auch 32-Bit-Java verwendet:

Seit Version 1.5 wird SmartFoxServer mit einer eigenen x86-32-Bit-Sun Java Runtime.

Eine schnelle Möglichkeit, um festzustellen, welche Version (en) von Java) Sie installiert haben, besteht darin, festzustellen, ob einer oder beide Ordner C:\Program Files\Java Oder C:\Program Files (x86)\Java vorhanden sind. Wenn beide Ordner vorhanden sind, hilft Ihnen das natürlich nicht viel.

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? In diesem Fall kann das Lesen hilfreich sein, um festzustellen, wo SFS ausgeführt wird Java from. Achten Sie auch auf Änderungen an PATH. Java = kann nur DLLs in der Systemeigenschaft Java.library.path laden. Unter Windows wird dies auf den Wert der Umgebungsvariablen PATH festgelegt.

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

16
Luke Woodward

Bei Verwendung von Windows Authentication Integrated Security

  1. Laden Sie das sqljdbc_6.0.8112.100_enu.exe von der Microsoft Site herunter
  2. Installieren Sie die exe (lesen Sie die Anweisungen im Zip-Pfad)
  3. kopieren Sie die Datei sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll nach

    Java/jre7/bin nd bis

    Java/jre7/lib

Danach sollten Sie in der Lage sein, eine Verbindung zu Ruhezustandstools herzustellen, um die Datenbank in Data Tools abzurufen

12
Pavan

 Platzieren Sie die DLL-Datei in Ihrem JRE-Ordner: -
Ich hatte auch das gleiche Problem und danach habe ich sqljdbc_auth.dll (x86 oder x64), abhängig von Ihrem Betriebssystem, im JRE-Ordner jre7/bin/file.dll abgelegt und dann meine application.jar & it ausgeführt hat einwandfrei funktioniert. Das hat bei mir geklappt das kannst du auch probieren das kann dir auch helfen :)

6
Mohammad Hani

Laden Sie den JDBC-Treiber (Version 7.2) von Microsoft herunter und kopieren Sie den Ordner sqljdbc_auth.dll nach C:\Programme\Java\jre\bin und C:\Programme\Java\jdk\bin. Sie würden zum Ordner "Programme (x86)" wechseln, wenn Sie Java 32-Bit) ausführen.

0
CLU7CH3R