Sunil Hanke Ответов: 1

Не удается подключиться к локальному SQL server с узла docker swarm


Я создал образ демо-версии API .Net Core под названием "WebAPIDemo" ,создал для него контейнер и могу запустить его на своем broswer по url localhost:8888/swagger. Докер также установлен на самой моей машине. Мое приложение успешно устанавливает соединение с локальной базой данных, которая находится на самой моей машине.

Строка подключения приведена ниже: Источник данных=10.10.10.10\SQLEXPRESS,49172;база данных=DBName;идентификатор пользователя=**;пароль=****;MultipleActiveResultSets=true;

Now I am learning to use Docker Swarm and I have created a manager node "manager1" and a worker node "worker1". I have created a service for "WebAPIDemo" on manager node and i am able to access the swagger landing page on url for ex : 1.1.1.1:8888/swagger (lets say 1.1.1.1 is autogenerated Ip for manager node). But when i try to execute/invoke any endpoint from swagger page, I am getting below exception: "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server)"

Я не могу понять, почему он не расширяет связь с Sql Server. Я всего лишь новичок и довольно новичок в концепции docker и docker swarn. Не хватает ли мне каких-либо параметров конфигурации или любой конфигурации, связанной с приложением/sql, которая должна быть выполнена здесь для подключения к sql server?

Есть предложения?

Заранее спасибо

Что я уже пробовал:

Строка подключения приведена ниже:
Источник данных=10.10.10.10\sqlexpress в,49172;базы данных=Имя_бд;идентификатор пользователя=**;пароль=****;значение multipleactiveresultsets=true в;

1 Ответов

Рейтинг:
2

Afzaal Ahmad Zeeshan

Цитата:
При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром.
Это сообщение ясно говорит о том, что ваш сервер недоступен с вашей машины. Эта проблема может быть вызвана несколькими причинами, начиная от таких проблем, как неправильная строка подключения или имя сервера, сервер находится за брандмауэром или вы за брандмауэром, или сервер не работает.

Поскольку ваша проблема связана со средой Docker, проблема может заключаться в том, что ваш стек служб, балансирующий нагрузку на контейнеры SQL Server, может быть недоступен на том порту или имени хоста, с которого вы пытаетесь получить к ним доступ. Пожалуйста, ознакомьтесь с этим руководством и убедитесь, что вы правильно настроили SQL Server в Docker, Параметры конфигурации SQL Server в Docker - SQL Server | Microsoft Docs[^], было бы еще лучше, если бы вы могли просто попробовать использовать hello SQL Server для пробы.

Пожалуйста, проверьте эти проблемы, а затем снова подключитесь к вашим услугам Swagger, это будет работать. Вы можете увидеть список подобных потоков на CodeProject в правой части под списком лучших экспертов.

При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не был найден или недоступен. Убедитесь, что имя экземпляра указано правильно и...[^]
Контейнеры SQL Server 2017 на Kubernetes, OpenShift и Docker Swarm | Microsoft Ignite 2017 | Channel 9[^]

Если это ваша строка подключения,
Data Source=10.10.10.10\SQLEXPRESS,49172;Database=DBName;User ID=**;Password=****;MultipleActiveResultSets=true;
Убедитесь, что Docker настроен на прослушивание этого IP-адреса и открыл порт для подключения и взаимодействия с другими службами.


Sunil Hanke

Спасибо за ссылки, которые вы предоставили.
Как было опубликовано в вопросе
Я уже создал образ проекта .Net Core Api под названием "WebAPIDemo" ,создал для него контейнер, и он работает абсолютно нормально.
Я еще не создал образ для SQL server.У меня есть SQL server на моей локальной машине.
Никаких проблем в соединениях sql server, так как я уже сделал настройки порта TCP/IP для SQL server для удаленных подключений.
Но проблема подключения SQL возникает после создания WebAPIDemo как службы в узле управления Docker swarm .
Я создал сервис, выполнив команду "docker service create --replicas 1 -p 8800:82 --name WebAPIDemoService WebAPIDemo" в узле manager.
К вашему сведению ... антивирус и брандмауэр отключены.