Не удается подключиться к браузеру SQL Server. Убедитесь , что SQL Server…….., имя или служба неизвестны

#asp.net #sql-server #docker #asp.net-mvc-5

Вопрос:

Я настроил докер рабочего стола со следующими изображениями

  • SQL Server 2019
  • ASP.NET 5 приложение

SQL-сервер работает нормально (мне удалось подключить его к среде SQL Server Management Studio из моего локального Windows, а также проверить с помощью telnet из изображения приложения, которое выглядит нормально), но с моего ASP.NET приложение Я получаю следующее сообщение

Не удается подключиться к браузеру SQL Server. Убедитесь , что SQL Server…….., System.Net.Internals.SocketExceptionFactory Исключение ExtendedSocketException (00000005, 0xFFFDFFFF): Имя или служба неизвестны»

Я попробовал несколько вариантов строки подключения, но у меня все еще та же проблема.

 "connectionStrings": {
    "DefaultConnection": "Server={ipserver name}\MSSQLSERVER;Initial Catalog=Rocky;Integrated Security=True;User Id=myId;Password=myPsw;"
}
 

Я что-нибудь пропустил ?

Комментарии:

1. Вы Integrated Security установили значение true , но затем определите имя пользователя и пароль; это не имеет никакого смысла. Если вы используете интегрированную безопасность, вы, по определению, не определяете имя пользователя и пароль, а также учетные данные пользователя Windows, под которым работает приложение, передаются экземпляру.

2. В вашем. файл json у вас есть одна обратная косая черта, разделяющая имя экземпляра ( Server=ServerNameOrIpAddressMSSQLSERVER; ) или две ( Server=ServerNameOrIpAddress\MSSQLSERVER; )? Последнее верно, первое-нет.

3. MSSQLSERVER обычно обозначает (внутреннее) имя экземпляра безымянного экземпляра — для подключения к нему обычно не следует указывать имя экземпляра — только имя компьютера (или ip-адрес). Так что попробуйте Server={ipserver name};Initial Catalog=Rocky и дайте нам знать, если это сработает

4. Если вы используете именованный экземпляр, вам необходимо, чтобы браузер SQL был запущен и доступен по сети. Если вам нужен экземпляр по умолчанию, оставьте MSSQLSERVER

5. Integrated Security вот в чем проблема. Но если вы действительно хотите использовать Integrated Security , то настройте контейнер на использование gMSA, в противном случае установите для него значение False . Кроме того, если сервер MSSQL имеет только один экземпляр, просто используйте имя IP/компьютера без добавления имени экземпляра. Это может помочь: connectionstrings.com/sql-server

Ответ №1:

наконец я нашел проблему.

  1. У меня в докере было более одного изображения этого проекта.
  2. appsettings.json в контейнере не обновлялся, и строка подключения была другой, я предполагаю, что в ней использовалась старая версия изображения. после очистки всех изображений, смены сервера на IP и повторного развертывания он начал работать.

Спасибо за всех.