Мы применили корпоративную библиотеку Microsoft блок обработки временных сбоев в соединении и командах Azure Sql.
Например,
using(var sqlConnection = new ReliableSqlConnection(_connectionString, _connectionRetry, _commandRetry)
{
var command = sqlConnection.CreateCommand();
command.CommandText = "...";
sqlConnection.Open();
using(var reader = sqlConnection.ExecuteCommand<SqlDataReader>(command))
{
...
}
}
Это будет работать, например, для command.ExecuteReader()
, который является исходным вызовом без политики повторных попыток. Но что, если код использует DataSet
и SqlDataAdapter
:
using(var sqlConnection = new ReliableSqlConnection(_connectionString, _connectionRetry, _commandRetry)
{
var command = sqlConnection.CreateCommand();
command.CommandText = "...";
sqlConnection.Open();
// how to convert below codes to right way?
var adapter = new SqlDataAdapter(command);
var dataSet = new DataSet();
adapter.Fill(dataSet);
// handle dataSet
...
}
В основном мы работаем над некоторым устаревшим кодом, чтобы добавить некоторую стратегию повторных попыток.