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

Lesezeit: 7 Minuten

Benutzeravatar von Shaul Behr
Schaul Behr

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 versuche. 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“ (gemäß Spezifikation) lege, 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 dies normalerweise an der Datei liegt 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?

Bei Verwendung der integrierten Sicherheit der Windows-Authentifizierung

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

    Java/jre7/bin und zu

    Java/jre7/lib

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

  • Das Kopieren in das Java-Bin-Verzeichnis ist ausreichend

    – isapir

    13. Juni 2018 um 17:27 Uhr

  • Für mich war das Einfügen in die entsprechenden jdk/bin und jre/bin ausreichend.

    – Zygimantus

    19. April 2020 um 13:15 Uhr

  • Ich habe diese Datei ÜBERALL kopiert. Ich brauchte dies, um Oracle DataModeler zu verwenden, also öffnete ich C:\Program Files\OracleDataModeler und kopierte diese Datei nach .\jdk\lib, .\jdk\jre\bin, .\jdk\jre\lib, .\jdbc\libund .\jlib. Und es funktioniert!

    – Herr TA

    10. März 2021 um 15:09 Uhr

  • HINWEIS: Ab der Microsoft JDBC-Treiberversion 8 wird die Datei sqljdbc_auth.dll wurde umbenannt in mssql-jdbc_auth-xxxxxx.dll während das JDK/JRE dies möglicherweise noch möchte sqljdbc_auth.dll Name. Stellen Sie außerdem sicher, dass Sie die Dateien aus dem richtigen Ordner kopieren. Wenn Sie ein 32-Bit-JDK/JRE haben, benötigen Sie die DLL unter x86, andernfalls müssen Sie die DLL unter x64 kopieren

    – Bemipefe

    26. April um 13:15 Uhr

  • Stellen Sie sicher, dass die Version Ihrer .dll genau mit der Version der Datei sqljdbc.jar übereinstimmt. Eine Stunde durch einen Off-by-0.1-Fehler verloren.

    – Hammer Bro.

    18. Oktober um 18:23 Uhr


Benutzeravatar von Luke Woodward
Lukas Woodward

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 SFS noch nie verwendet, daher weiß ich nicht, ob es irgendwo Protokolle schreibt. Wenn dies der Fall ist, lohnt es sich möglicherweise, einen Blick auf diese Protokolle zu werfen, um festzustellen, ob etwas Hilfreiches darin geschrieben wurde.

BEARBEITEN: Ich kann nicht 100 % sicher sein, dass SFS 64-Bit-Java verwendet, nur weil C:\Program Files im Gegensatz zu C:\Program Files (x86) nicht mehr vorhanden ist.

Ich habe die folgende Zeile in der 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 kommt SmartFoxServer mit einer eigenen x86 32-Bit Sun Java Runtime.

Eine schnelle Möglichkeit, um festzustellen, welche Version(en) von Java Sie installiert haben, ist der folgende Befehl in Ihrem cmd: Java -version

Folgendes wird auf der Konsole 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 sehen Sie den Bittyp der installierten Java-Version.

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 dies der Fall ist, kann das Lesen dieser Informationen hilfreich sein, um darauf hinzuweisen, woher SFS Java ausführt. Achten Sie auch auf Änderungen an der PATH. Java kann nur DLLs im laden java.library.path Systemeigenschaft, und unter Windows wird dies auf den Wert von 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 anzuzeigen, mit der der java.exe-Prozess gestartet wurde, auf dem SFS ausgeführt wird.

  • Alles ist 64-Bit; Die SFS-Installation läuft aus meinem “Program Files”-Ordner (im Gegensatz zu “Program Files (x86)”). Kann ich davon ausgehen, dass die JVM auch 64-Bit ist? Wie könnte ich das erkennen?

    – Schaul Behr

    22. Mai 2011 um 12:55 Uhr

  • OMG, das ist wild. Ich habe experimentiert und die x86-Version der DLL in den Erweiterungsordner kopiert – und es hat funktioniert! Das ist total wild – angeblich ein 64-Bit-Server, aber darauf läuft eine 32-Bit-Version der JVM! (Mit anderen Worten, Sie haben den Jackpot geknackt!)

    – Schaul Behr

    22. Mai 2011 um 13:03 Uhr


  • @Shaul: Ich bin froh, dass du es herausgefunden hast. Ich war gerade dabei, meiner Antwort weitere Informationen hinzuzufügen, um Ihnen zu helfen, aber es sieht so aus, als hätten Sie sie nicht gebraucht! 🙂

    – Lukas Woodward

    22. Mai 2011 um 13:27 Uhr

In meinem Fall habe ich Folgendes zur Lösung getan:

Heruntergeladener Microsoft JDBC-Treiber 8.2 für SQL Server (zip) (hier zu finden – https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15).

Dann ging ich in der Zip-Datei in die folgenden Ordner:

sqljdbc_8.2 > enu > auth > x64

und die kopierte “mssql-jdbc_auth-8.2.2.x64.dll” nach C:\Program Files\Java\jdk-12.0.1\bin

  • Dies ist in der Tat die einfachere und auch die richtige Antwort

    – juanchavezlive

    6. August 2021 um 22:17 Uhr

  • Ich fand dies sehr nützlich, um den SSL-Fehler zu beheben, wenn Oracle Data Modeler mit einem mssql verbunden wird, das Nicht-SSL-Verbindungen ablehnt.

    – Glezo

    7. April um 12:12

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) je nach Betriebssystem im JRE-Ordner abgelegt, dh jre7/bin/file.dll, und dann meine application.jar ausgeführt und es hat perfekt funktioniert. Das hat bei mir funktioniert, du kannst es auch versuchen, vielleicht hilft dir das auch 🙂

Ich hatte das gleiche Problem für die folgende Windows-Authentifizierungszeichenfolge

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

das Standard-AuthenticationScheme=NativeAuthentication, also hängt es möglicherweise von einigen Microsoft-DLLs ab. Um dies zu beheben, aktualisieren Sie das Authentifizierungsschema als NTLM wie unten

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

Hinweis: Der angegebene Benutzername war ohne Domäne

  • Das Hinzufügen von authenticationScheme=NTLM war das, was ich brauchte, damit JPA-Tools in Eclipse mit Windows Integrated Authentication (WIA) funktionieren. Benutzer-ID und Passwort sind dann erforderlich, aber die Authentifizierung erfolgt mit WIA. Nichts anderes funktionierte.

    – Toni B

    25. Februar 2021 um 22:04 Uhr

  • Was ist “myDomain” in der Verbindungszeichenfolge?

    – Dänische Ansari

    3. August 2021 um 16:26 Uhr

  • Domäne für Windows-Benutzername

    – U_R_Naveen UR_Naveen

    4. August 2021 um 13:20 Uhr

  • Groß! Ich brauchte das NTLM nicht, aber dies (zusammen mit dem Kopieren der sqljdbc_auth.dll in den entsprechenden Pfad, in meinem Fall /libswt für Pentaho Data Integration, wie in der Dokumentation angegeben) hat den Job gemacht.

    – Raúl Moreno

    10. September 2021 um 12:18 Uhr

  • Konnte mit Erwin Data Modeler – Reverse Engineering – eine Verbindung zu einer SQL Server-Datenbank herstellen. Benötigte die Domäne nicht, benötigte aber das authenticationScheme=NTLM und integratedSecurity=true. Vielen Dank!

    – Shanemeister

    1. Dezember 2021 um 22:39 Uhr

Benutzeravatar von CLUTCHER
KUPPLUNG

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

  • Das Hinzufügen von authenticationScheme=NTLM war das, was ich brauchte, damit JPA-Tools in Eclipse mit Windows Integrated Authentication (WIA) funktionieren. Benutzer-ID und Passwort sind dann erforderlich, aber die Authentifizierung erfolgt mit WIA. Nichts anderes funktionierte.

    – Toni B

    25. Februar 2021 um 22:04 Uhr

  • Was ist “myDomain” in der Verbindungszeichenfolge?

    – Dänische Ansari

    3. August 2021 um 16:26 Uhr

  • Domäne für Windows-Benutzername

    – U_R_Naveen UR_Naveen

    4. August 2021 um 13:20 Uhr

  • Groß! Ich brauchte das NTLM nicht, aber dies (zusammen mit dem Kopieren der sqljdbc_auth.dll in den entsprechenden Pfad, in meinem Fall /libswt für Pentaho Data Integration, wie in der Dokumentation angegeben) hat den Job gemacht.

    – Raúl Moreno

    10. September 2021 um 12:18 Uhr

  • Konnte mit Erwin Data Modeler – Reverse Engineering – eine Verbindung zu einer SQL Server-Datenbank herstellen. Benötigte die Domäne nicht, benötigte aber das authenticationScheme=NTLM und integratedSecurity=true. Vielen Dank!

    – Shanemeister

    1. Dezember 2021 um 22:39 Uhr

Benutzeravatar von raj
Raj

Ich hatte ein ähnliches Problem und habe den Speicherort der DLL-Datei in pom.xml unter platziert

-Djava.library.path=”C:\*\\**”

und das hat bei mir funktioniert

1431050cookie-checkJDBC SQLServerException: “Dieser Treiber ist nicht für integrierte Authentifizierung konfiguriert.”

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy