Проблема с подключением JTDS к SQL Server

Это странно, я подключаюсь к экземпляру SQL Server 2008, который имеет встроенную проверку подлинности, настроенную для Windows. Я нашел способ обойти встроенную аутентификацию, сделав это в коде:

Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;username=$jboss;password=1234;domain=MYDOMAIN", "$jboss", "1234");

Так что выше после выполнения класса для имени на драйверах jtds он работает отлично. Тем не менее, мне нужно поместить это как строку подключения в файл конфигурации, и когда я изменяю вышеупомянутое, чтобы использовать вызов метода на getConnection без явной отправки имени пользователя, параметры пароля будут такими:

 Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;username=$jboss;password=1234;domain=MYDOMAIN");

Я получаю исключение для встроенной библиотеки SSPI, потому что она пытается аутентифицироваться с использованием аутентификации Windows. Итак, я обнаружил, что dll в дистрибутиве jts добавляет ntlmauth.dll в мой bin и системный classpath, а затем я получаю исключение для входа в ненадежный домен, которое, как я знаю, можно разрешить, выполнив "RUNAS.exe " в домене, но это возвращает меня к необходимость использовать встроенную аутентификацию, которую я не хочу.

Вопрос сводится к тому, почему я могу создать Соединение без каких-либо проблем, передавая имя пользователя и пароль в качестве параметров в методе getConnection(), но когда это не так, принудительно вводится встроенная аутентификация. Это не будет проблемой, если я сам создаю Соединение в коде, но мне нужно одну строку соединения, чтобы поместить в мой файл свойств, и я не знаю, как создать строку соединения, которая вызовет getConnection() и предоставит имя пользователя, пароль как парам.

Я ненавижу эти утомительные проблемы, которые есть в Google, но они возникли с пустыми руками, любой вклад поможет. - Дункан

1 ответ

Решение

Параметр пользователь, а не имя пользователя. Это должно исправить ваши проблемы. Так что постарайтесь:

 Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;user=$jboss;password=1234;domain=MYDOMAIN");
Другие вопросы по тегам