Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: .NET Framework
.NET
Standard
Użyj pliku konfiguracji aplikacji, aby przypisać domyślnych dostawców ponawiania do każdego wystąpienia SqlConnection lub SqlCommand w ramach procesu. Bez tych sekcji lub przypisania dostawcy na poziomie obiektowym, SqlClient używa SqlConfigurableRetryFactory.CreateNoneRetryProvider i nie próbuje ponownie.
Sekcje konfiguracji
Zadeklaruj sekcje powtórek wewnątrz elementu configSections . Deklaracje sekcji muszą pojawić się przed odpowiadającymi wartościami konfiguracji.
-
SqlConfigurableRetryLogicConnection: Ustawia domyślnego dostawcę dla SqlConnection.
<section name="SqlConfigurableRetryLogicConnection"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
-
SqlConfigurableRetryLogicCommand: Ustawia domyślnego dostawcę dla SqlCommand.
<section name="SqlConfigurableRetryLogicCommand"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>
Sekcja połączeń
Ustaw domyślną logikę powtórek dla wszystkich SqlConnection instancji w aplikacji, używając następujących atrybutów:
numberOfTries: Ustala łączną liczbę prób, wliczając początkową operację. Ważny zakres to od 1 do 60.
deltaTime: Ustawia odstęp czasu jako obiekt TimeSpan.
minTime: Ustawia minimalny dozwolony odstęp czasu w postaci obiektu TimeSpan.
maxTime: Ustawia maksymalny dozwolony odstęp czasu w postaci obiektu TimeSpan.
transientErrors: Ustawia listę numerów błędów oddzielonych przecinkami do ponownego próbowania. Jeśli ją pominiesz, dostawca korzysta z wbudowanej listy błędów przejściowych. Jeśli to określisz, twoja lista zastępuje wbudowaną listę.
retryMethod: Określa twórcę metody retry, który odbiera konfigurację retry przez parametr SqlRetryLogicOption i zwraca SqlRetryLogicBaseProvider obiekt.
retryLogicType: Ustawia niestandardowego dostawcę logiki ponawiania, który zawiera konstruktory metod ponawiania określone przez
retryMethod. Te metody muszą spełniać kryteria dlaretryMethod. Używaj w pełni wykwalifikowanej nazwy dostawcy usług. Aby uzyskać więcej informacji, zobacz Określanie w pełni kwalifikowanych nazw typów.
Uwaga / Notatka
Nie musisz określać retryLogicType , kiedy korzystasz z wbudowanego dostawcy. Dostępne metody można znaleźć w artykule Wbudowani dostawcy logiki retry w SqlClient.
Sekcja poleceń
Ustaw domyślną logikę powtórek dla wszystkich SqlCommand instancji w aplikacji, używając atrybutów sekcji połączenia oraz następującego atrybutu specyficznego dla polecenia:
- authorizedSqlCondition: Ustawia wyrażenie regularne, które musi się zgadzać, SqlCommand.CommandText zanim dostawca ponownie wykona polecenie. Jeśli wyrażenie się nie zgadza, polecenie uruchamia się raz bez logiki powtórki.
Uwaga / Notatka
W wyrażeniu regularnym rozróżniana jest wielkość liter. Uwzględnij opcję wbudowaną, taką jak (?i), gdy potrzebujesz dopasowania bez uwzględniania wielkości liter.
Przykłady
Próbuje nawiązać połączenie do trzech razy z przybliżonym 1-sekundowym opóźnieniem między próbami przy użyciu SqlConfigurableRetryFactory.CreateFixedRetryProvider metody i domyślnej listy błędów przejściowych:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateFixedRetryProvider" numberOfTries ="3" deltaTime ="00:00:01"/>Próbuje nawiązać połączenie do pięciu razy z maksymalnie 45-sekundowym opóźnieniem między próbami przy użyciu SqlConfigurableRetryFactory.CreateExponentialRetryProvider metody i domyślnej listy błędów przejściowych:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateExponentialRetryProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"/>Próbuje wykonać polecenie do czterech razy z opóźnieniem od 2 do 30 sekund przy użyciu SqlConfigurableRetryFactory.CreateIncrementalRetryProvider metody i domyślnej listy błędów przejściowych:
<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="4" deltaTime ="00:00:02" maxTime ="00:00:30"/>Próbuje wykonać polecenie do ośmiu razy z opóźnieniem od jednej sekundy do jednej minuty. Ogranicza się do poleceń zawierających
CommandText, słowoSELECTzapisane wielkimi literami oraz numery błędów 102 lub 997. OkreślenietransientErrorszastępuje wbudowaną listę, więc nie są powtarzane żadne inne błędy. W poniższym przykładzie użyto SqlConfigurableRetryFactory.CreateIncrementalRetryProvider:<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="8" deltaTime ="00:00:01" maxTime ="00:01:00" transientErrors="102, 997" authorizedSqlCondition="\b(SELECT)\b"/>
Uwaga / Notatka
W kolejnych dwóch przykładach można znaleźć kod źródłowy niestandardowej logiki ponawiania z artykułu Podstawowe interfejsy API konfigurowalnej logiki ponawiania w SqlClient. Zakłada się, że metoda CreateCustomProvider jest zdefiniowana w klasie CustomCRL_Doc.CustomRetry w zestawie CustomCRL_Doc.dll, który znajduje się w katalogu wykonywalnym aplikacji.
Próbuje nawiązać połączenie maksymalnie pięć razy, z opóźnieniem od 3 do 45 sekund, z numerami błędów 4060, 997 i 233 na liście oraz przy użyciu określonego niestandardowego dostawcy ponowień:
<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"/>Ten przykład zachowuje się podobnie do poprzedniego:
<SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc" retryMethod ="CreateCustomProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45" transientErrors ="4060, 997, 233"/>
Important
Pierwsze żądanie dla dowolnej ze skonfigurowanych wartości domyślnych powoduje, że SqlClient ładuje i buforuje zarówno dostawców połączeń, jak i poleceń. Zmiany w pliku konfiguracyjnym nie wpływają na żadnego z dostawców, dopóki proces nie zostanie wznowiony.
Błędy podczas odczytywania ustawień ponawiania nie powodują awarii aplikacji. SqlClient śledzi błąd konfiguracyjny i używa SqlConfigurableRetryFactory.CreateNoneRetryProvider, więc operacje są wykonywane bez powtórek.
Użyj śledzenia źródła zdarzeń, aby sprawdzić lub rozwiązać problemy z konfiguracją ponawiania. Aby uzyskać więcej informacji, zobacz Włączanie śledzenia zdarzeń w programie SqlClient.