JDBC SQLServerException: "ce pilote n'est pas configuré pour l'authentification intégrée."
mon avertissement standard: Je n'ai pas travaillé avec Java depuis environ 10 ans, il est donc très probable que je fasse quelque chose de Mal élémentaire ici.
j'écris une "extension côté serveur" pour SmartFoxServer (SFS). Dans mon script de connexion, j'ai besoin de faire une connexion au serveur MS SQL, ce que j'essaie de faire en utilisant JDBC. J'ai testé le code JDBC dans mon environnement de débogage, et il fonctionne très bien.
MAIS
quand je mets l'extension côté serveur dans le dossier" extensions " de SFS (selon spec), j'obtiens un com.microsoft.sqlserver.jdbc.SQLServerException
:
"Ce pilote n'est pas configuré pour l'authentification intégrée.".
J'ai cherché sur Google pour cette erreur, et j'ai trouvé que c'est habituellement parce que le fichier sqljdbc_auth.dll
n'est pas dans le chemin du système; j'ai copié ce fichier dans un dossier de mon chemin du système, et il ne fonctionne toujours pas!
d'autres suggestions?
3 réponses
Il existe différentes versions de sqljdbc_auth.dll pour différentes architectures de processeurs (x86/x64/ia64). Lequel utilisez-vous sur votre serveur SFS?
vous devez choisir celui qui correspond à l'architecture de la JVM dans laquelle SFS est exécuté. Donc, si vous utilisez Java 32 bits sur une machine 64 bits, vous aurez besoin de la version x86, pas de la version x64.
Je n'ai pas utilisé SFS avant, donc je ne sais pas si elle écrit des logs n'importe où. Si c'est le cas, cela pourrait valoir la peine jetez un coup d'oeil à ces journaux pour voir si quelque chose d'utile leur a été écrit.
EDIT: 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 la section SFS docs sous Introduction > exigences et Installation. Alors que cette ligne ne s'applique qu'à Linux par opposition à Windows, elle pourrait suggérer que SFS sur Windows utilise aussi Java 32-bit:
depuis la version 1.5 SmartFoxServer est livré avec son propre x86 32 bits Sun Java Runtime.
un moyen rapide de déterminer quelle(S) version (s) de Java vous avez installée est de voir si l'un ou l'autre ou les deux dossiers C:\Program Files\Java
ou C:\Program Files (x86)\Java
existent. Bien sûr, si les deux dossiers existent, cela ne vous aidera pas beaucoup.
Est-ce que votre application fonctionne si vous utilisez la version x86 de sqljdbc_auth.dll au lieu de la version x64? Si, tout à coup commence à travailler avec la DLL x86, puis SFS doit utiliser Java 32 bits.
y a-t-il un fichier batch utilisé pour lancer SFS? Si c'est le cas, la lecture de ce texte pourrait aider à déterminer d'où SFS exécute Java. Attention aussi à tout changement dans le PATH
. Java ne peut charger les DLLs que dans java.library.path
propriété système, et sur Windows, c'est la valeur de l'
si vous ne pouvez toujours pas déterminer si SFS utilise le Java 32 bits ou 64 bits, essayez D'utiliser Process Explorer pour regarder l'environnement que le java.le processus exe qui exécute SFS a commencé avec.
lors de L'utilisation de L'authentification Windows Sécurité Intégrée
- Télécharger sqljdbc_6.0.8112.100_enu.exe sur le Site de Microsoft
- Installer le fichier exe (lire les instructions dans le zip chemin)
copier sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll
Java / jre7 / bin et
Java / jre7 / lib
après cela youj devrait être en mesure de se connecter à des outils d'hibernation pour tirer la base de données dans les Outils de Données
Place .fichier dll dans votre dossier JRE: -
Je faisais également face au même problème et après que j'ai placé sqljdbc_auth.dll (x86 ou x64) selon votre système d'exploitation dans le dossier JRE I. e jre7 / bin / file.dll et ensuite lancer mon application.jar et cela a fonctionné parfaitement. Cela a fonctionné pour moi, vous pouvez également essayer ce que ce soit aussi aider à vous :)