Не удается подключиться к серверу Mssql, работающему в док-контейнере на Mac, из CLI или pyodbc - Azure DS работает? - PullRequest
1 голос
/ 11 июня 2019

В настоящее время я не могу подключиться к серверу MSSQL, который я использую в док-контейнере на моем Mac-ноутбуке, используя любые инструменты CLI или pyodbc. Целью является подключение к базе данных и взаимодействие с ней с помощью pyodbc. Странно, но с помощью Azure Data Studio я могу подключиться без проблем.

Я следовал следующим двум урокам, чтобы установить сервер Sql на мой Mac, а затем восстановить старую резервную копию существующего сервера.

https://database.guide/how-to-install-sql-server-on-a-mac/ https://database.guide/how-to-restore-a-sql-server-database-on-a-mac-using-azure-data-studio/

Предложение Microsoft sqlcmd для меня не сработало

    sqlcmd -S <ip_address>,1433 -U SA -P '<YourNewStrong!Passw0rd>'

что было задокументировано здесь: https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-2017&pivots=cs1-bash

  • когда я впервые установил докер, я не увеличивал выделение памяти до 4 ГБ. Я сделал это после запуска моего контейнера и перезапустил контейнер и сам Mac. Насколько я понимаю, эта память должна быть доступна для этого контейнера сейчас.

  • Я пробовал mssql, sqlcmd, pyodbc с различными параметрами соединения, но ни один из них у меня не работает.

  • Я МОГУ подключиться через Azure Data Studio со следующей информацией о подключении: Тип подключения: Microsoft SQL Server Сервер: localhost, 1401 Тип аутентификации: Sql Login Имя пользователя: sa пароль:

Основываясь на моем успехе во взаимодействии с базой данных через ADS, я предполагал, что есть ошибки в параметрах соединения, которые я передаю инструментам CLI, но на данный момент я думаю, что попробовал почти каждую перестановку Я могу думать о. Я включил некоторые попытки подключения и ошибки, которые они выдают

Я читал много других билетов на github и переполнение стека, похоже, что обычные причины этой проблемы - люди, не запускающие свой контейнер или не использующие достаточно сложный PW. Это не относится к моим обстоятельствам.

$ sqlcmd -S 172.17.0.2,1433 -U SA -P <TestPW123$> 

Результат:

SqlState HYT00, Login timeout expired
HResult 0x102, Level 11, State 0
TCP Provider: Error code 0x102
HResult 0x102, Level 11, State 0
A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.

$ sqlcmd -S localhost,1433 -U SA -P <TestPW123$> 

РЕЗУЛЬТАТ:

sqlcmd(992,0x112ef45c0) malloc: can't allocate region
*** mach_vm_map(size=18446744073709527040) failed (error code=3)

$ mssql -s localhost -o 1433 -u sa -p <TestPW123$> 

Результат:

Connecting to localhost...
Error: Failed to connect to localhost:1433 - connect ECONNREFUSED 127.0.0.1:1433

1 Ответ

1 голос
/ 11 июня 2019

В итоге я решил эту проблему, создав новый докер-контейнер и восстановив базу данных в этом контейнере. Я так и не смог выяснить, какова была предыдущая проблема, но все инструменты CLI работают сейчас.

Я внимательно следил за руководством Microsoft и, пытаясь подключиться извне контейнера, использовал внутренний сетевой IP-адрес моего ноутбука. В моем случае это были 192.168.0.4, а не 127.0.0.2 IP, на которые ссылались некоторые учебники. Я завернул свой пароль в одинарные кавычки при успешном подключении. Вот успешное соединение:

'' '

sqlcmd -S 192.168.0.4,1433 -U SA -P 'TestPW123$'

'' '

надеюсь, это поможет кому-то еще.

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