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
Die standardmäßige Wiederholungsmethode bei aktiviertem Sicherheitsschalter ist SqlConfigurableRetryFactory.CreateNoneRetryProvider sowohl für SqlConnection als auch für SqlCommand. Sie können mithilfe einer Konfigurationsdatei eine andere Wiederholungsmethode angeben.
Konfigurationsabschnitte
Die Optionen für standardmäßige Wiederholungslogik bei einer Anwendung können durch Hinzufügen der folgenden Abschnitte im Abschnitt configSections der Konfigurationsdatei geändert werden:
-
SqlConfigurableRetryLogicConnection: Wird zur Angabe der standardmäßigen Wiederholungslogik für SqlConnection verwendet.
<section name="SqlConfigurableRetryLogicConnection"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
-
SqlConfigurableRetryLogicCommand: Wird zur Angabe der standardmäßigen Wiederholungslogik für SqlCommand verwendet.
<section name="SqlConfigurableRetryLogicCommand"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>
Hinweis
Die folgenden Konfigurationen sollten im Abschnitt configuration angegeben werden. Deklarieren Sie diese neuen Abschnitte, um die standardmäßige Wiederholungslogik über eine Anwendungskonfigurationsdatei zu konfigurieren.
Verbindungsabschnitt
Die folgenden Attribute können verwendet werden, um die standardmäßige Wiederholungslogik für alle SqlConnection-Instanzen in einer Anwendung anzugeben:
numberOfTries: Legt die Anzahl von Versuchen fest.
deltaTime: Legt das Intervall für die zeitliche Lücke als TimeSpan-Objekt fest.
minTime: Legt das zulässige Intervall für die minimale zeitliche Lücke als TimeSpan-Objekt fest.
maxTime: Legt das zulässige Intervall für die maximale zeitliche Lücke als TimeSpan-Objekt fest.
transientErrors: Legt die Liste der vorübergehenden Fehlernummern fest, bei denen der Vorgang wiederholt werden soll.
retryMethod: Gibt einen Ersteller der Wiederholungsmethode an, der die Wiederholungskonfiguration über einen SqlRetryLogicOption-Parameter empfängt und ein SqlRetryLogicBaseProvider-Objekt zurückgibt.
retryLogicType: Legt einen benutzerdefinierten Anbieter von Wiederholungslogik fest, der die Ersteller der Wiederholungsmethode enthält, die den Wert für
retryMethodbereitstellen. Diese Methoden sollten die Kriterien fürretryMethoderfüllen. Der vollqualifizierte Typname des Anbieters sollte verwendet werden. Weitere Informationen finden Sie unter Angeben vollqualifizierter Typnamen.
Hinweis
Wenn Sie die integrierten Wiederholungsanbieter verwenden, ist es nicht erforderlich, den Wert retryLogicType anzugeben. Informationen zu den integrierten Wiederholungsanbietern finden Sie unter Interne Anbieter von Wiederholungslogik in SqlClient.
Befehlsabschnitt
Das folgende Attribut kann ebenfalls für alle SqlCommand-Instanzen in einer Anwendung festgelegt werden:
- authorizedSqlCondition: Legt einen regulären Ausdruck vor Wiederholungsversuchen für SqlCommand.CommandText fest, um bestimmte SQL-Anweisungen zu filtern.
Hinweis
Beim regulären Ausdruck muss die Groß-/Kleinschreibung beachtet werden.
Beispiele
In diesem Beispiel wird versucht, mithilfe der Methode SqlConfigurableRetryFactory.CreateFixedRetryProvider und der Standardliste von vorübergehenden Fehlern eine Verbindung bis zu drei Mal mit einer ungefähren Verzögerung von 1 Sekunde zwischen den einzelnen Versuchen herzustellen:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateFixedRetryProvider" numberOfTries ="3" deltaTime ="00:00:01"/>In diesem Beispiel wird versucht, mithilfe der Methode SqlConfigurableRetryFactory.CreateExponentialRetryProvider und der Standardliste von vorübergehenden Fehlern eine Verbindung bis zu fünf Mal mit einer ungefähren Verzögerung von 45 Sekunden zwischen den einzelnen Versuchen herzustellen:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateExponentialRetryProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"/>In diesem Beispiel wird versucht, mithilfe der Methode SqlConfigurableRetryFactory.CreateIncrementalRetryProvider und der Standardliste von vorübergehenden Fehlern einen Befehl bis zu vier Mal mit einer Verzögerung zwischen 2 und 30 Sekunden auszuführen:
<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="4" deltaTime ="00:00:02" maxTime ="00:00:30"/>In diesem Beispiel wird versucht, einen Befehl bis zu acht Mal mit einer Verzögerung von einer Sekunde bis einer Minute auszuführen. Dieses Beispiel ist auf Befehle mit
CommandTextbeschränkt, die das WortSELECTund die Ausnahmenummern „102“ oder „997“ enthalten. Es verwendet die integrierte Methode SqlConfigurableRetryFactory.CreateIncrementalRetryProvider:<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="8" deltaTime ="00:00:01" maxTime ="00:01:00" transientErrors="102, 997" authorizedSqlCondition="\b(SELECT)\b"/>
Hinweis
In den nächsten beiden Beispielen finden Sie den benutzerdefinierten Quellcode für Wiederholungslogik aus Core-APIs für konfigurierbare Wiederholungslogik in SqlClient. Es wird davon ausgegangen, dass die Methode CreateCustomProvider in der Klasse CustomCRL_Doc.CustomRetry der Assembly CustomCRL_Doc.dll definiert wird, die sich im ausführenden Verzeichnis der Anwendung befindet.
In diesem Beispiel wird versucht, mithilfe des angegebenen benutzerdefinierten Wiederholungsanbieters eine Verbindung bis zu fünf Mal herzustellen, mit einer Verzögerung zwischen 3 und 45 Sekunden sowie den Fehlernummern „4060“, „997“ und „233“ in der Liste:
<SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" retryMethod ="CreateCustomProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45" transientErrors ="4060, 997, 233"/>Dieses Beispiel verhält sich wie das vorherige:
<SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc" retryMethod ="CreateCustomProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45" transientErrors ="4060, 997, 233"/>
Hinweis
Anbieter von Wiederholungslogik werden bei der ersten Verwendung für eine Verbindung oder einen Befehl zur künftigen Verwendung während der Lebensdauer einer Anwendung zwischengespeichert.
Hinweis
Fehler beim Lesen einer Anwendungskonfigurationsdatei für Wiederholungslogikeinstellungen verursachen keine Fehler in der Anwendung. Stattdessen wird der Standardwert SqlConfigurableRetryFactory.CreateNoneRetryProvider verwendet.
Mithilfe der Ereignisquellen-Ablaufverfolgung können Sie Probleme beim Konfigurieren der Wiederholungslogik überprüfen oder beheben. Weitere Informationen finden Sie unter Aktivieren der Ereignisablaufverfolgung in SqlClient.