Ho implementato il seguente codice per la gestione della logica di ripetizione INSERT/UPDATE con backoff esponenziale durante la scrittura in un database di Azure.Logica tentativi database SQL Azure
static SqlConnection TryOpen(this SqlConnection connection)
{
int attempts = 0;
while (attempts < 5)
{
try
{
if (attempts > 0)
System.Threading.Thread.Sleep(((int)Math.Pow(3, attempts)) * 1000);
connection.Open();
return connection;
}
catch { }
attempts++;
}
throw new Exception("Unable to obtain a connection to SQL Server or SQL Azure.");
}
Tuttavia, dovrei considerare l'applicazione della logica di retry anche per il mio database? O sarebbe sufficiente il metodo SqlCommand.CommandTimeout()? La maggior parte della mia letture sono istituiti utilizzando il seguente codice:
Dim myDateAdapter As New SqlDataAdapter(mySqlCommand)
Dim ds As New DataSet
myDateAdapter.Fill(ds, "dtName")
E 'difficile sapere che tipo di errori temporanei avverrà in un ambiente di produzione con Azure così sto cercando di fare il più possibile la mitigazione come ora.
Sto esaminando questo ora. Il blocco TFH fornirà informazioni dettagliate sul motivo del rifiuto di una connessione? – QFDev