Ich habe den folgenden Code für die Handhabung von INSERT/UPDATE Wiederholungslogik mit exponentiellen Backoff beim Schreiben in eine Azure-Datenbank implementiert.SQL Azure Datenbank Wiederholungslogik
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.");
}
Aber sollte ich in Erwägung ziehen, Wiederholungslogik auch für meine Datenbanklesevorgänge anzuwenden? Oder würde die Methode SqlCommand.CommandTimeout() ausreichen? Die meisten meiner liest werden mit dem folgenden Code eingeführt:
Dim myDateAdapter As New SqlDataAdapter(mySqlCommand)
Dim ds As New DataSet
myDateAdapter.Fill(ds, "dtName")
Es ist schwer zu wissen, welche Art von transienten Fehlern in einer Produktionsumgebung mit Azure auftreten wird so jetzt versuche ich, so viel Milderung wie möglich zu tun.
Ich untersuche das jetzt. Bietet der TFH-Block detaillierte Informationen darüber, warum eine Verbindung unterbrochen wird? – QFDev