web-dev-qa-db-fra.com

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

J'écris une "extension côté serveur" pour SmartFoxServer (SFS). Dans mon script de connexion, je dois établir une connexion avec MS SQL Server, ce que j'essaie de faire en utilisant JDBC. J'ai testé le code JDBC dans mon environnement de débogage, et cela fonctionne très bien.

MAIS

Lorsque je mets l'extension côté serveur dans le dossier "extensions" SFS (selon les spécifications), j'obtiens un com.Microsoft.sqlserver.jdbc.SQLServerException:

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

J'ai recherché cette erreur sur Google, et j'ai constaté que c'était généralement parce que le fichier sqljdbc_auth.dll n'est pas dans le chemin système; J'ai copié ce fichier dans un dossier dans mon chemin d'accès système, et cela ne fonctionne toujours pas!

D'autres suggestions?

29
Shaul Behr

Il existe différentes versions de sqljdbc_auth.dll pour différentes architectures de processeur (x86/x64/ia64). Lequel utilisez-vous sur votre serveur SFS?

Vous devez choisir celui qui correspond à l'architecture de la machine virtuelle Java sous laquelle SFS s'exécute. Donc, si vous exécutez 32 bits Java sur une machine 64 bits, vous aurez besoin de la version x86, pas de la version x64.

Je n'ai jamais utilisé SFS auparavant, donc je ne sais pas s'il écrit des journaux n'importe où. Si c'est le cas, il peut être utile de consulter ces journaux pour voir si quelque chose d'utile leur a été écrit.

[~ # ~] modifier [~ # ~] : je ne peux pas être sûr à 100% que SFS utilise 64 bits Java juste parce qu'il est à court de C:\Program Files par opposition à C:\Program Files (x86).

J'ai trouvé la ligne suivante dans les documents SFS sous Introduction> Configuration requise et installation. Bien que cette ligne s'applique uniquement à Linux par opposition à Windows, cela pourrait suggérer que SFS sur Windows utilise également Java 32 bits:

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

Un moyen rapide de déterminer la ou les versions de Java que vous avez installé) consiste à voir si l'un 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 aide pas beaucoup.

Votre application fonctionne-t-elle si vous utilisez la version x86 de sqljdbc_auth.dll au lieu de la version x64? S'il commence soudainement à fonctionner avec la DLL x86, alors SFS doit utiliser Java 32 bits.

Y a-t-il un fichier batch utilisé pour démarrer SFS? Si tel est le cas, la lecture de ces informations pourrait aider à indiquer où SFS s'exécute Java from. Recherchez également les modifications apportées à PATH. Java = peut uniquement charger des DLL dans la propriété système Java.library.path, et sous Windows, il est défini sur la valeur de la variable d'environnement PATH.

Si vous ne pouvez toujours pas déterminer si SFS utilise Java 32 bits ou 64 bits, essayez d'utiliser Process Explorer pour examiner l'environnement avec lequel le processus Java.exe exécutant SFS a été démarré.

16
Luke Woodward

Lors de l'utilisation de la sécurité intégrée de l'authentification Windows

  1. Téléchargez le sqljdbc_6.0.8112.100_enu.exe à partir du site Microsoft
  2. Installez l'exe (lisez les instructions dans le chemin Zip)
  3. copiez sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll dans

    Java/jre7/bin et à

    Java/jre7/lib

Après cela, vous devriez pouvoir vous connecter aux outils de mise en veille prolongée pour extraire la base de données dans les outils de données

12
Pavan

 Placer le fichier .dll dans votre dossier JRE: -
J'étais également confronté au même problème et après cela, j'ai placé sqljdbc_auth.dll (x86 ou x64) en fonction de votre système d'exploitation dans le dossier JRE, à savoir jre7/bin/file.dll, puis exécutez mon application.jar a parfaitement fonctionné. Cela a fonctionné pour moi, vous pouvez également essayer cela peut également vous aider :)

6
Mohammad Hani

Téléchargez le pilote jdbc (ver 7.2) auprès de Microsoft et copiez le dossier sqljdbc_auth.dll dans C:\Program Files\Java\jre\bin et C:\Program Files\Java\jdk\bin. Vous iriez dans le dossier Program Files (x86) si vous exécutez Java 32 bits.

0
CLU7CH3R