Невозможно соединиться с Docker SQL Сервером с JDB C (но SSMS работает) - PullRequest
0 голосов
/ 25 февраля 2020

Контекст

У меня SQL Экземпляр сервера, работающий в Docker (Linux контейнер). Порт сопоставлен с 1433: 1433, что делает его доступным на хост-компьютере. У него есть имя пользователя и надежный пароль для аутентификации.

docker run --name sql1 -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=P4ssw0rd" -p 1433:1433 -d microsoft/mssql-server-linux:2017-latest

Чтобы подключиться к SQL Server Management Studio, я могу просто использовать следующее:

  • Имя сервера: localhost
  • Логин: sa
  • Пароль: P4ssw0rd

Проблема

Работает полностью, как задумано. Однако, когда я пытаюсь соединиться с JDB C (через JBoss), он не может соединиться. Соответствующая часть источника данных выглядит следующим образом:

<connection-url>jdbc:sqlserver://localhost</connection-url>
<security>
  <user-name>sa</user-name>
  <password>P4ssw0rd</password>
</security>

Когда я запускаю локальный SQL Сервер Express экземпляр (вместо Docker), с включенным TCP / IP, соединение с JDB C работает отлично, поэтому проблема не в структуре моей конфигурации JDB C. Основное отличие состоит в том, что я использую именованный экземпляр ( MACHINE \ INSTANCE_NAME ) вместо имени хоста, например localhost. Может ли это быть как-то связано с проблемой соединения?

Обновление

При отладке с локальной установкой драйвера JDB C мне удалось заставить его работать используя имя машины вместо localhost. Тем не менее, JBoss по-прежнему не хочет подключаться к нему, поэтому проблема все еще остается.

Я также обнаружил, что если я изменю порт на недопустимый порт, подключение займет много времени, а затем раз в то время как стандартный порт 1433 сразу выдает ошибку. Это означает, что SQL Сервер определенно работает на этом порту.

...