Попытка подключиться к базе данных SQL — поставщик: поставщик TCP, ошибка: 26 — ошибка при обнаружении указанного серверC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Попытка подключиться к базе данных SQL — поставщик: поставщик TCP, ошибка: 26 — ошибка при обнаружении указанного сервер

Сообщение Anonymous »

У меня есть изолированное приложение-функция Azure C# .NET 8, которое я пытаюсь подключить к базе данных SQL, но не могу найти проблему.
SqlException:
При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик TCP, ошибка: 26 — ошибка определения сервера/указанного экземпляра)
У нас есть разные команды, где я нахожусь, я в команде разработчиков, есть сетевая команда и команда SQL. Я пытаюсь определить, в чем может заключаться проблема.
Функция пытается подключиться к SQL напрямую, используя как управляемое удостоверение, так и прямое имя пользователя и пароль, но безуспешно. Из приложения-функции на сервер Azure MS SQL не предоставляется доступ и он находится за виртуальными сетями и частными конечными точками. Кажется, они настроены правильно с сетевой стороны, поскольку я могу определить адрес и порт сервера.
Я использовал простой код, чтобы проверить, смогу ли я открыть соединение:
Я использовал простой код, чтобы проверить, могу ли я открыть соединение:
p>

Код: Выделить всё

try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
await connection.OpenAsync();
_logger.LogInformation("Successfully connected to SQL Server.");
}

return new OkObjectResult("Successfully connected to SQL Server.");
}
catch (SqlException ex)
{
var result = JsonConvert.SerializeObject(new
{
Message = $"SqlException: {ex.Message}",
ex.StackTrace,
ex.InnerException,
ex.Source
});

_logger.LogError(ex, ex.Message);
return new ObjectResult(result) { StatusCode = StatusCodes.Status503ServiceUnavailable };
}
catch (Exception ex)
{
var result = JsonConvert.SerializeObject(new
{
Message = $"Exception: {ex.Message}",
ex.StackTrace,
ex.InnerException,
ex.Source
});

_logger.LogError(ex, ex.Message);
return new ObjectResult(result) { StatusCode = StatusCodes.Status503ServiceUnavailable };
}
Эта проблема связана с базой данных, работой сети или кодом?
Я попробовал tcpping через Kudu в приложении-функции Azure, и он может разрешить проблему . data.windows.net 1433
Я создал новый сервер и базу данных Azure MS SQL без виртуальных сетей и частных конечных точек, а также без разрешений или чего-то в этом роде, но я могу подключиться к нему просто отлично.
Я также пробовал разные строки подключения.
РЕДАКТИРОВАТЬ:
Подробнее об этой функции: она использует план приложения для Linux.
Я обновил строку подключения, чтобы использовать IP-адрес вместо имени сервера, и в итоге получил ошибку типа это:

Код: Выделить всё

A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught)
После того, как я еще немного прочитал, это указало мне на проблемы TLS/SSL. Поэтому я добавил эту функцию в док-контейнер Linux локально, и теперь получаю ту же ошибку при попытке подключения к одному SQL-серверу.
Но когда я снова подключаюсь к созданному мной базовому серверу, он работает. Какую конфигурацию SQL мне не хватает и почему она связана с образом Linux?

Подробнее здесь: https://stackoverflow.com/questions/787 ... r-locating
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»