JDBC SQLServerException: "этот драйвер не настроен для встроенной проверки подлинности."

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

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

но

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

"этот драйвер не настроен на использование встроенной проверки подлинности.".

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

какие-то другие предложения?

3 ответов


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

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

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

редактировать: Я не могу быть на 100% уверен, что SFS использует 64-битную Java только потому, что она заканчивается C:\Program файлы в отличие от C:\Program файлы (x86).

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

начиная с версии 1.5 SmartFoxServer поставляется с собственной 32-разрядной средой выполнения Sun Java x86.

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

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

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

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


при использовании встроенной безопасности проверки подлинности Windows

  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

после этого вы сможете подключиться к Hibernate tools для потяните базу данных в Data Tools


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