Wiederholungslogik für die SQL Azure-Datenbank
Ich habe den folgenden Code für die Behandlung der INSERT / UPDATE-Wiederholungslogik mit exponentiellem Backoff beim Schreiben in eine Azure-Datenbank implementiert.
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.");
}
Sollte ich jedoch in Betracht ziehen, die Wiederholungslogik auch für meine Datenbanklesevorgänge anzuwenden? Oder würde die Methode SqlCommand.CommandTimeout () ausreichen? Die meisten meiner Lesevorgänge werden mit folgendem Code durchgeführt:
Dim myDateAdapter As New SqlDataAdapter(mySqlCommand)
Dim ds As New DataSet
myDateAdapter.Fill(ds, "dtName")
Es ist schwer zu sagen, welche vorübergehenden Fehler in einer Produktionsumgebung mit Azure auftreten werden, daher versuche ich, jetzt so weit wie möglich Abhilfe zu schaffen.