SqlException содержит список ошибок, который должен показать мне точную ошибку.
https://learn.microsoft.com/en-us/dotnet/api/system .data.sqlclient.sqlerror.number?view=netframework-4.8.1
Однако, согласно моим тестам, всякий раз, когда я останавливаю службу SQL Server, единственное свойство в этой коллекции содержит SqlError Свойству .Number присвоено значение "-1".
Код: Выделить всё
if (ex is SqlException sqlException)
{
int number = ex.Number; // -1
}
При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. . Сервер не найден или недоступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 26 – ошибка определения сервера/экземпляра)
Итак, мои вопросы
- Можно ли предположить, что если коллекция SqlError содержит только запись с номером «-1», то это проблема, связанная с сетью?
- Если нет, то как я могу получить эту конкретную информацию «поставщик: сетевые интерфейсы SQL, ошибка: 26 — ошибка определения сервера/экземпляра» из объекта SqlException?
- Если я попытаюсь получить это число «26» путем анализа сообщения об ошибке, это будет подвержено ошибкам, верно? Я предполагаю, что эти сообщения об ошибках могут быть локализованы на другие языки в зависимости от настроек системы.
- Существует ли документация обо всех возможных проблемах, связанных с потерей соединения с экземпляром SQL Server, и соответствующие рекомендации как это обнаружить в C#?


Подробнее здесь: https://stackoverflow.com/questions/790 ... -correctly
Мобильная версия