Как устранить внезапную потерю соединения с SQL Azure в моей роли Azure?

Моя роль Azure захватывает данные для обработки из базы данных - она ​​содержит экземпляр System.Data.SqlClient.SqlConnection и периодически создает SqlCommand и выполняет запрос SQL.

Теперь время от времени (обычно раз в несколько дней) выполнение запроса вызывает исключение SqlException

Служба обнаружила ошибку обработки ваш запрос. Пожалуйста, попробуйте еще раз. Код ошибки 40143. Произошла серьезная ошибка в текущей команде. От результатов, если таковые имеются, следует отказаться.

Я уже много раз видел, и теперь мой код улавливает их, вызывает Dispose () в экземпляре SqlConnection , а затем повторно открывает соединение и повторяет запрос. Последнее обычно приводит к другому SqlException исключению

Истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает.

Это очень похоже на то, что сервер SQL Azure не отвечает или недоступен по какой-либо причине.

В настоящее время мой код не перехватывает последнее исключение. , он распространяется за пределы RoleEntryPoint.Run () , и роль перезапускается. Перезагрузка обычно занимает около десяти минут, и после ее завершения проблема исчезает примерно на день.

Мне не нравится перезапуск моей роли - это занимает время, а функциональность моей службы затрудняется. Я хотел бы сделать что-то более умное.

Какой была бы стратегия решения этой проблемы? Следует ли мне повторять запрос несколько раз, сколько раз и с каким интервалом? Я должен сделать что-нибудь еще? Когда мне сдаться и позволить роли просто перезапуститься?

14
задан Community 23 May 2017 в 10:34
поделиться