Question

Je suis en train d'écrire un côté serveur "extension" SmartFoxServer (SFS).Dans mon script de connexion, j'ai besoin de faire une connexion à MS SQL Server, que je suis tenté de faire, à l'aide de JDBC.J'ai testé le code JDBC dans mon environnement de débogage, et il fonctionne très bien.

MAIS

Quand j'ai mis le serveur de l'extension du côté de l'ESF, "le dossier" extensions (comme par spec), je suis un com.microsoft.sqlserver.jdbc.SQLServerException:

"Ce pilote n'est pas configuré pour l'authentification intégrée.".

J'ai Googlé pour cette erreur, et trouve que c'est généralement parce que le fichier sqljdbc_auth.dll n'est pas dans le chemin d'accès au système;J'ai copié ce fichier dans un dossier dans mon chemin d'accès au système, et encore il ne fonctionne pas!

Toutes les autres suggestions?

Était-ce utile?

La solution

Il existe différentes versions de sqljdbc_auth.dll pour différentes architectures de processeurs (x86/x64 et ia64).Quels sont ceux que vous utilisez sur votre serveur SFS?

Vous devez choisir l'une correspondant à l'architecture de la JVM en vertu de laquelle SFS est en cours d'exécution.Donc, si vous êtes en cours d'exécution Java 32 bits sur une machine 64 bits, vous aurez besoin de la version x86, pas la version x64.

Je n'ai pas utilisé SFS avant, donc je ne sais pas si il écrit tous les journaux, partout.Si c'est le cas, il peut être la peine de prendre un coup d'oeil à ces journaux pour voir si quelque chose d'utile a été écrit pour eux.

MODIFIER:Je ne peux pas être sûr à 100% de l'ESF est à l'aide de 64 bits de Java juste parce qu'il est à court de C:\Program Fichiers par opposition à C:\Program Files (x86).

J'ai trouvé la ligne suivante dans le SFS docs en vertu de l'Introduction > les Exigences et l'Installation.Alors que cette ligne s'applique uniquement pour Linux, contrairement à Windows, on peut penser que SFS sur Windows utilise aussi la version 32 bits de Java:

Depuis la version 1.5 de SmartFoxServer est livré avec son propre x86 32 bits Sun Java Runtime.

Un moyen rapide pour déterminer quelle version(s) de Java que vous avez installé est, donner la commande suivante dans votre cmd: Java -version

Il affichera le suivant sur la 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)

Ici,vous pouvez voir le type de bit de la version de java installée.

Est-ce que votre application fonctionne si vous utilisez la version x86 de sqljdbc_auth.dll au lieu de la version x64?Si soudain, elle commence à travailler avec le processeur x86 DLL, puis SFS doivent utiliser la version 32 bits de Java.

Est-il un lot de fichier utilisé pour démarrer SFS?Si oui, la lecture à travers, qui pourrait aider à préciser où SFS est en cours d'exécution Java de.Également regarder dehors pour tout changement à la PATH.Java ne peut charger les Dll dans le java.library.path le système de propriété, et sur Windows, c'est la valeur de la PATH variable d'environnement.

Si vous ne pouvez pas déterminer si SFS est 32 bits ou 64 bits de Java, essayez d'utiliser l'Explorateur de Processus de regarder l'environnement dans lequel l'java.exe processus en cours d'exécution SFS a commencé.

Autres conseils

Lors de l'utilisation de l'Authentification Windows Intégrée de la Sécurité

  1. Télécharger le sqljdbc_6.0.8112.100_enu.exe sur le Site de Microsoft
  2. Installer le fichier exe (lire les instructions dans le zip chemin)
  3. copie sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll pour

    Java/jre7/bin et pour

    Java/jre7/lib

Après cette youj devrait être en mesure de se connecter à hibernate outils à tirer de la base de données dans les Outils de Données

                                                            Place .Fichier dll Dans Votre Dossier JRE:-
J'ai aussi été confrontée au même problème et après que j'ai placé sqljdbc_auth.dll (x86 ou x64) en fonction de votre système d'exploitation dans le dossier JRE-je.e jre7/bin/file.dll et puis exécutez ma application.jar et il a parfaitement fonctionné.Cela a fonctionné pour moi, vous pouvez également essayer ce que ce soit aussi aider à vous :)

Télécharger le pilote jdbc (ver 7.2) de Microsoft et de copier le sqljdbc_auth.dll pour C:\Program Files\Java\jre\bin et C:\Program Files\Java\jdk\bin.Vous allez à Program Files (x86) dossier si vous êtes en cours d'exécution Java 32 bits.

Dans mon cas, j'ai fait le suivant à résoudre:

Téléchargé le Pilote Microsoft JDBC 8.2 pour SQL Server (zip) (trouvé ici - https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15).

Puis dans le fichier zip, je suis allé dans les dossiers suivants:

sqljdbc_8.2 > enu > auth - > x64

et le copié "mssql-jdbc_auth-8.2.2.x64.dll" pour C:\Program Files\Java\jdk-12.0.1\bin

j'ai eu face d'un même problème pour la suite de l'authentification windows chaîne

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

la valeur par défaut authenticationScheme=NativeAuthentication, de Sorte qu'il pourrait dépend de certaines dll microsoft.Pour le corriger, la mise à jour authenticationScheme NTLM comme ci-dessous

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

note:nom d'utilisateur donné est sans domaine

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top