Действительно, вы можете получить ошибки тайм-аута, когда база данных Azure недоступна. Фактически вы можете получить следующие ошибки:
- Ошибка HTTP GatewayTimeout: шлюз не получил ответ от 'Microsoft.Sql' в течение указанного периода времени
- Ошибка HTTP ServiceUnavailable: Тайм-аут запроса
- SQLException: время ожидания истекло. Время ожидания истекло до завершения операции, или сервер не отвечает.
Вы также можете получить ошибку 40613, но вы можете зафиксировать некоторые временные ошибки, как показано ниже:
• База данных на сервере в данный момент недоступна. Пожалуйста, повторите попытку позже. Если проблема не устраняется, обратитесь в службу поддержки клиентов и предоставьте им идентификатор трассировки сеанса
• База данных на сервере в данный момент недоступна. Пожалуйста, повторите попытку позже. Если проблема не устранена, обратитесь в службу поддержки и предоставьте им идентификатор трассировки сеанса. (Microsoft SQL Server, ошибка: 40613)
• Существующее соединение было принудительно закрыто удаленным хостом.
• System.Data.Entity.Core.EntityCommandExecutionException: ошибка произошла во время выполнение определения команды. Смотрите внутреннее исключение для деталей. ---> System.Data.SqlClient.SqlException: при получении результатов с сервера произошла ошибка транспортного уровня. (поставщик: поставщик сеанса, ошибка: 19 - физическое соединение не используется)
• Попытка подключения к вторичной базе данных не удалась, поскольку база данных находится в процессе реконфигурации, и она занята применением новых страниц в то время как в середина активного перехода в первичной базе данных.
Из-за этих ошибок и более подробного объяснения здесь необходимо создать логи повторной попытки c для приложений, которые подключаются к Azure SQL База данных.
public void HandleTransients()
{
var connStr = "some database";
var _policy = RetryPolicy.Create < SqlAzureTransientErrorDetectionStrategy(
retryCount: 3,
retryInterval: TimeSpan.FromSeconds(5));
using (var conn = new ReliableSqlConnection(connStr, _policy))
{
// Do SQL stuff here.
}
}
Подробнее о том, как создать повторные логи c здесь .