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
- скачать sqljdbc_6.0.8112.100_enu.exe С сайта Microsoft
- установите exe (прочитайте инструкции в пути zip)
-
копировать 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 работал отлично. Это сработало для меня, вы также можете попробовать это, возможно, это также поможет вам:)