Почему проект .NET Core на macOS не подключается к контейнеру SQL Server Express Docker? - PullRequest
0 голосов
/ 01 октября 2019

Я работаю над проектом университетской группы, который ранее использовал MySQL, но команда решила перейти на MS SQL Server Express. Я единственный член команды, использующий Mac, поэтому я пытаюсь подключить проект к докеру. Я работаю в Visual Studio для Mac.

Я создал и запустил контейнер SQL Express 2017 с этим:

docker run -d --name sqlexpress -e 'ACCEPT_EULA = Y '-e' SA_PASSWORD = MSSQLContainer1 '-e' MSSQL_PID = Express '-p 1433: 1433 -d mcr.microsoft.com/mssql/server:2017-latest-ubuntu

Какиевыглядит следующим образом при запуске:

ИД КОНТЕЙНЕРА: e448f6e4df4

ИЗОБРАЖЕНИЕ: mcr.microsoft.com/mssql/server:2017-latest-ubuntu

КОМАНДА:"/ opt / mssql / bin / sqls…"

СОЗДАН: 21 час назад

СОСТОЯНИЕ: до 21 часа

ПОРТЫ: 0.0.0.0:1433->1433/tcp

ИМЕНА: sqlexpress

И когда я запускаю SQL Server внутри докера и вводу SELECT @@ VERSION:

Microsoft SQL Server 2017 (окончательная первоначальная версия)-CU16) (KB4508218) - 14.0.3223.3 (X64) 12 июля 2019 г. 17:43:08 Авторское право (C) 2017 Выпуск Microsoft Corporation Express (64-разрядная версия) в Linux (Ubuntu 16.04.6 LTS)

Я могу подключиться кв контейнер из Azure Data Studio или DBeaver без проблем и создать базу данных с именем HelpdeskSystem .

Но я не могуна всю жизнь заставьте наше приложение .NET Core подключаться к базе данных.

Это моя текущая строка подключения;хотя я пробовал разные варианты:

"Сервер = localhost \\ sqlexpress, 1433; База данных = HelpdeskSystem; Пользователь = sa; Пароль = MSSQLContainer1;"

Кроме того, вот как выглядит строка подключения, которую используют мои товарищи по команде на своих компьютерах с Windows (и я также попытался включить эти дополнительные свойства в мою строку):

"server = localhost \\ sqlexpress; База данных = HelpdeskSystem; Trusted_Connection = True; Интегрированная безопасность = True; MultipleActiveResultSets = true "

Когда я пытаюсь запустить модульный тест, требующий подключения к базе данных, я получаю следующее исключение:

InnerException: {System.Net.Sockets.SocketException (0x80004005): неопределенная ошибка: 0 в System.Data.SqlClient.SNI.SSRP.GetPortByInstanceName (String browserHostName, String instanceName) в System.Data.Sec. SNI.SNIProxy.CreateTcpHandle (сведения об источнике данных, Int64 timerExpire, объект callbackObject, логическая параллель)}

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

Я не уверен, неверна ли моя строка или есть какая-либо другая основная проблема, препятствующая подключению веб-приложения, ноЯ определенно могу подключиться к контейнеру с помощью Azure Data Studio, поэтому не понимаю, почему веб-приложение не сможет.

1 Ответ

0 голосов
/ 01 октября 2019

Используйте эту строку подключения. Можно упомянуть tcp перед петлевым ip.

"Server=tcp:127.0.0.1,1433;Database=HelpdeskSystem;User=sa;Password=MSSQLContainer1;"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...