Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: .NET Framework
.NET .NET
Standard
Dieser Artikel zeigt, wie man einen exponentiellen Wiederversuchsanbieter erstellt und ihn einem SqlConnectionzuweist. Der Provider versucht, die im Treiber integrierte Liste vorübergehender Verbindungsfehler zu überprüfen und die Verbindung bis zu fünfmal wiederherzustellen.
Voraussetzungen
- Microsoft. Data.SqlClient 3.0 oder eine neuere Version.
- Eine Verbindungszeichenfolge für SQL Server, Azure SQL-Datenbank, Azure SQL Managed Instance oder SQL-Datenbank in Microsoft Fabric.
Konfigurieren Sie einen Provider für Verbindungswiederholungen
Definieren Sie die Optionen für den erneuten Versuch.
TransientErrorsalsnullbelassen, damit der Anbieter die integrierte Liste vorübergehender Fehler verwendet.// Define the retry logic parameters var options = new SqlRetryLogicOption() { // Tries 5 times before throwing an exception NumberOfTries = 5, // Preferred gap time to delay before retry DeltaTime = TimeSpan.FromSeconds(1), // Maximum gap time for each delay time before retry MaxTimeInterval = TimeSpan.FromSeconds(20) };Erstellen Sie einen Anbieter aus den Optionen.
// Create a retry logic provider SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);Weisen Sie den Anbieter zu, bevor Sie die Verbindung öffnen.
// Assumes that connection is a valid SqlConnection object // Set the retry logic provider on the connection instance connection.RetryLogicProvider = provider; // Establishing the connection will retry if a transient failure occurs. connection.Open();
NumberOfTries = 5 erlaubt einen ersten Versuch und bis zu vier Wiederholungen. Der exponentielle Anbieter erhöht das Abstand zwischen den Versuchen und fügt zufälligen Jitter hinzu.
MaxTimeInterval begrenzt jede einzelne Verzögerung, nicht die gesamte vergangene Zeit aller Versuche.
Wiederholungsversuche für Befehle konfigurieren
Einen separaten Anbieter erstellen und SqlCommand.RetryLogicProvider zuweisen. Legen Sie SqlRetryLogicOption.AuthorizedSqlCondition auf ein Prädikat fest, das true nur für Kommandos zurückgibt, die Ihre Anwendung sicher wiederholen kann.
Vorsicht
Ein integrierter Anbieter führt einen Befehl nicht erneut aus, wenn für die Verbindung eine aktive Transaktion vorliegt. Wenn ein vorübergehender Fehler eine Transaktion ungültig macht, wird die gesamte Transaktion zurückgerollt und erneut versucht. Wiederholen Sie nicht nur die fehlgeschlagene Anweisung.
Die Einstellung SqlRetryLogicOption.TransientErrors ersetzt die eingebaute Fehlerliste des Treibers. Um die Basislinie zu erweitern, ohne die Standardwerte zu verlieren, siehe Erweiterung der integrierten transienten Fehlerliste.