JDBC SQLServerException: «Этот драйвер не настроен для интегрированной аутентификации». - PullRequest
29 голосов
/ 22 мая 2011

Мой стандартный отказ от ответственности: я не работал с Java около 10 лет, поэтому очень вероятно, что я делаю что-то элементарное неправильно здесь.

Я пишу «расширение на стороне сервера» для SmartFoxServer (SFS). В моем сценарии входа в систему мне нужно установить соединение с MS SQL Server, что я пытаюсь сделать с помощью JDBC. Я протестировал код JDBC в моей среде отладки, и он отлично работает.

НО

Когда я помещаю серверное расширение в папку «расширения» SFS (согласно спецификации), я получаю com.microsoft.sqlserver.jdbc.SQLServerException:

"Этот драйвер не настроен для встроенной аутентификации.".

Я погуглил эту ошибку и обнаружил, что обычно это происходит потому, что файл sqljdbc_auth.dll не находится в системном пути; Я скопировал этот файл в папку в системном пути, но он все равно не работает!

Есть еще предложения?

Ответы [ 4 ]

16 голосов
/ 22 мая 2011

Существуют разные версии sqljdbc_auth.dll для разных архитектур процессоров (x86 / x64 / ia64).Какой из них вы используете на своем сервере SFS?

Вы должны выбрать тот, который соответствует архитектуре JVM, под которой работает SFS.Итак, если вы используете 32-битную Java на 64-битной машине, вам понадобится версия x86, а не версия x64.

Я раньше не использовал SFS, поэтому не будузнать, пишет ли он где-нибудь журналы.Если это произойдет, возможно, стоит взглянуть на эти журналы, чтобы убедиться, что им написано что-нибудь полезное.

РЕДАКТИРОВАТЬ : я не могу быть на 100% уверен, что SFSиспользование 64-битной Java только потому, что в ней не хватает C: \ Program Files, а не C: \ Program Files (x86).

Я нашел следующую строку в SFS docs вВведение> Требования и установка.Хотя эта строка относится только к Linux, а не к Windows, можно предположить, что SFS в Windows также использует 32-разрядную версию Java:

Поскольку версия 1.5 SmartFoxServer поставляется со своей 32-разрядной ОС Sun Java 32-разрядной среды выполнения x86,

Один быстрый способ определить, какую версию (версии) Java вы установили, это посмотреть, существуют ли одна или обе папки C:\Program Files\Java или C:\Program Files (x86)\Java.Конечно, если обе папки существуют, это вам мало поможет.

Работает ли ваше приложение, если вы используете версию sqljdbc_auth.dll для x86 вместо версии x64?Если он вдруг начинает работать с библиотекой x86, тогда SFS должна использовать 32-разрядную версию Java.

Существует ли пакетный файл для запуска SFS?Если это так, чтение этого может помочь определить, откуда SFS работает с Java.Также обратите внимание на любые изменения в PATH.Java может загружать DLL только в системном свойстве java.library.path, а в Windows это значение равно значению переменной среды PATH.

Если вы все еще не можете определить, использует ли SFS 32-битовая или 64-битная Java, попробуйте с помощью Process Explorer посмотреть на среду, с которой был запущен процесс java.exe, на котором запущен SFS.

10 голосов
/ 21 августа 2017

При использовании встроенной защиты Windows Authentication

  1. Загрузите sqljdbc_6.0.8112.100_enu.exe с сайта Microsoft
  2. Установите exe (прочитайте инструкцию в zip-пути)
  3. скопировать sqljdbc_4.0 / enu / auth / x64 / sqljdbc_auth.dll в

    Java / jre7 / bin и

    Java / jre7 / Lib

После этого вы сможете подключиться к инструментам гибернации для извлечения базы данных в Инструментах данных

6 голосов
/ 01 декабря 2015

Поместите файл .dll в папку JRE: -
Я также столкнулся с той же проблемой, и после этого я поместил sqljdbc_auth.dll (x86 или x64) в зависимости от вашей операционной системы в папку JRE, т.е. jre7 / bin / file.dll, а затем запустил application.jar, и он работал отлично. Это сработало для меня, вы также можете попробовать это, возможно, это также поможет вам :)

0 голосов
/ 03 мая 2019

Загрузите драйвер jdbc (версия 7.2) от Microsoft и скопируйте sqljdbc_auth.dll в папку C: \ Program Files \ Java \ jre \ bin и C: \ Program Files \ Java \ jdk \ bin,Вы перейдете в папку Program Files (x86), если вы используете 32-битную версию Java.

...