Как подключиться к базе данных SQL Server внутри Docker-контейнера? - PullRequest
1 голос
/ 07 июня 2019

Я создал Docker-контейнер, используя следующую команду:

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=MyStr@ngPassw0rd' -e 'MSSQL_PID=Express' -p 1433:1433 -d microsoft/mssql-server-linux:latest

Я бы хотел использовать SSMS для подключения к этой базе данных с моего хост-компьютера. Какие параметры мне следует использовать в диалоговом окне входа в систему SSMS?

Мои текущие записи:

  • Тип сервера: ядро ​​базы данных
  • Имя сервера: [имя машины]
  • Аутентификация: аутентификация SQL Server
  • Логин: sa
  • Пароль: MyStr @ ngPassw0rd

Но я получаю эту ошибку:

НАЗВАНИЕ: Подключение к серверу

Невозможно подключиться к localhost:.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

При установлении соединения с SQL Server произошла ошибка сети или экземпляра. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server) (Microsoft SQL Server, ошибка: 53)


сетевой путь не найден

Кажется, я не могу "увидеть" базу данных.

Что-то не так с моей строкой подключения или невозможно подключиться таким образом?

1 Ответ

2 голосов
/ 08 июня 2019

Если вы используете Docker CE в Windows с контейнерами Linux, укажите двойные кавычки вокруг переменных среды, чтобы они были распознаны:

docker run -e "ACCEPT_EULA=Y" -e 'SA_PASSWORD=MyStr@ngPassw0rd" -e "MSSQL_PID=Express" -p 1433:1433 -d microsoft/mssql-server-linux:latest

После этого вы сможете подключиться с использованием SSMS.В этом случае с портом 1433 по умолчанию вы можете указать . или localhost в качестве имени сервера.Вы также можете подключиться к экземпляру контейнера с удаленного хоста, указав только имя вашего компьютера (при условии, что правила брандмауэра разрешают входящий трафик порта 1433).

При использовании одинарных кавычек значения не распознаются, и контейнер немедленно останавливается,Вы можете использовать docker logs <container-name> для просмотра сообщений из журнала ошибок SQL Server для устранения неполадок.Ниже приведен пример использования имени контейнера эксплицита (который я рекомендую для упрощения таких задач) с использованием исходной команды задачи:

docker run --name sql1 -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=MyStr@ngPassw0rd' -e 'MSSQL_PID=Express' -p 1433:1433 -d microsoft/mssql-server-linux:latest
c3de002fc22106e53c9b165c7f444905b5ef1bb1596eddf1b097cdd6d60e6c75

docker logs sql1

Лицензионное соглашение с конечным пользователем SQL Server (EULA) должно бытьпринято до запуска SQL Server.Условия лицензии для этого продукта можно загрузить с http://go.microsoft.com/fwlink/?LinkId=746388.

. Вы можете принять лицензионное соглашение, указав параметр командной строки --accept-eula, задав переменную среды ACCEPT_EULA или используя инструмент mssql-conf.

Как видно из записанного в журнал сообщения, экземпляр SQL остановился (остановив контейнер), поскольку SQL Server не распознал EULA, принятое из-за одинарных кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...