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)
Но когда я снова подключаюсь к созданному мной базовому серверу, он работает. Какую конфигурацию SQL мне не хватает и почему она связана с образом Linux?
Подробнее здесь: https://stackoverflow.com/questions/787 ... r-locating