ADO.NET, обнаружив, что все используемые соединения разорваны - PullRequest
0 голосов
/ 28 сентября 2018

Я использую ADO.NET (собственный клиент SQL-сервера), скажем, в виде службы, которая в основном отвечает за сбор событий с различных устройств.Службы предназначены для сбора большого трафика с этих устройств.

В настоящее время я использую пулы подключений в локальной сети, но мы планируем переместить, возможно, один день на облачный / внешний сервер SQL.Я планировал установить некоторую стратегию управления исключениями для обработки повторных попыток обработки ошибок (возможно, с использованием polly), но я действительно не знаю, как обнаружить реальный набор всех соединений с сервером.В версии POC я использовал одно общее соединение, защищенное взаимной эксклюзивной блокировкой, так что это было легко.

Теперь, когда я использую несколько подключений, как я могу точно знать, когда сервер SQL недоступен? Цель состоит в том, чтобы отключить службу сбора событий, чтобы устройства на другомсторона перестает передавать свои события и запускает автономный режим.

Я начал с некой обертки для получения соединения.Благодаря этому я могу вести список используемых соединений.Затем я представлял, что тестирую все используемые соединения, чтобы посмотреть, не закрыты ли они и не разорваны ли они на случай, если одно из них сломается.Но в зависимости от длительности команды / запроса, соединение может еще не быть помечено как закрытое ....

Я использую один пул соединений (та же строка соединения), и яисключительно с использованием SqlCommand (ExecuteReader, ExecuteNonQuery и ExecuteScalar)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...