Подтвердить что ты не робот

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

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

НО

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

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

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

Любые другие предложения?

4b9b3361

Ответ 1

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

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

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

EDIT. Я не могу быть на 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 Runtime x86.

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

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

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

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

Ответ 2

При использовании Windows Authentication Integrated Security

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

    Java/jre7/bin и

    Java/jre7/Библиотека

После этого youj должен иметь возможность подключиться к инструментам спящего режима, чтобы вытащить базу данных в Data Tools

Ответ 3

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

Ответ 4

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