Udostępnij za pomocą


Konfigurowalny plik konfiguracji logiki ponawiania za pomocą programu SqlClient

Dotyczy: .NET Framework .NET Standard

Pobieranie ADO.NET

Domyślną metodą ponawiania próby po włączeniu przełącznika bezpieczeństwa jest SqlConfigurableRetryFactory.CreateNoneRetryProvider zarówno dla , SqlConnection jak i SqlCommand. Możesz określić inną metodę ponawiania przy użyciu pliku konfiguracji.

Sekcje konfiguracji

Domyślne opcje logiki ponawiania dla aplikacji można zmienić, dodając następujące sekcje w configSections sekcji pliku konfiguracji:

  • SqlConfigurableRetryLogicConnection: aby określić domyślną logikę ponawiania prób dla elementu SqlConnection.
<section name="SqlConfigurableRetryLogicConnection"
        type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
  • SqlConfigurableRetryLogicCommand: aby określić domyślną logikę ponawiania prób dla elementu SqlCommand.
<section name="SqlConfigurableRetryLogicCommand"
        type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>

Uwaga / Notatka

W sekcji należy określić configuration następujące konfiguracje. Zadeklaruj te nowe sekcje, aby skonfigurować domyślną logikę ponawiania za pomocą pliku konfiguracji aplikacji.

Sekcja połączenia

Następujące atrybuty mogą służyć do określenia domyślnej logiki ponawiania dla wszystkich SqlConnection wystąpień w aplikacji:

  • numberOfTries: ustawia liczbę prób.

  • deltaTime: ustawia interwał czasu przerwy jako TimeSpan obiekt.

  • minTime: ustawia dozwolony minimalny interwał czasu przerwy jako TimeSpan obiekt.

  • maxTime: ustawia dozwolony maksymalny interwał czasu przerwy jako TimeSpan obiekt.

  • transientErrors: ustawia listę przejściowych numerów błędów, na których należy ponowić próbę.

  • retryMethod: określa twórcę metody ponawiania, który odbiera konfigurację ponawiania prób za pośrednictwem parametru SqlRetryLogicOption i zwraca SqlRetryLogicBaseProvider obiekt.

  • retryLogicType: ustawia niestandardowego dostawcę logiki ponawiania, który zawiera twórców metody ponawiania, które udostępniają element retryMethod. Te metody powinny spełniać kryteria dla elementu retryMethod. Należy użyć w pełni kwalifikowanej nazwy typu dostawcy. Aby uzyskać więcej informacji, zobacz Określanie w pełni kwalifikowanych nazw typów.

Uwaga / Notatka

Nie jest wymagane określenie retryLogicType , czy używasz wbudowanych dostawców ponawiania prób. Aby znaleźć wbudowanych dostawców ponawiania prób, zobacz Wewnętrzne dostawcy logiki ponawiania w programie SqlClient.

Sekcja poleceń

Dla wszystkich SqlCommand wystąpień w aplikacji można również ustawić następujący atrybut:

  • authorizedSqlCondition: ustawia wstępnie ponowione wyrażenie regularne, SqlCommand.CommandText aby filtrować określone instrukcje SQL.

Uwaga / Notatka

W wyrażeniu regularnym jest uwzględniana wielkość 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. Jest ona ograniczona do poleceń zawierających CommandText wyrazy SELECT i numery wyjątków 102 lub 997. Używa wbudowanej SqlConfigurableRetryFactory.CreateIncrementalRetryProvider metody:

    <SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" 
                            numberOfTries ="8" deltaTime ="00:00:01" maxTime ="00:01:00"
                            transientErrors="102, 997"
                            authorizedSqlCondition="\b(SELECT)\b"/>
    

Uwaga / Notatka

W dwóch następnych przykładach kod źródłowy niestandardowej logiki ponawiania można znaleźć w temacie Configurable retry logic core APIs in SqlClient (Konfigurowanie podstawowych interfejsów API logiki ponawiania prób w programie SqlClient). Zakłada się, CreateCustomProvider że metoda jest zdefiniowana w CustomCRL_Doc.CustomRetry klasie w CustomCRL_Doc.dll zestawie, który znajduje się w katalogu wykonywania aplikacji.

  • Próbuje nawiązać połączenie do pięciu razy, z opóźnieniem od 3 do 45 sekund, numerami błędów 4060, 997 i 233 na liście oraz przy użyciu określonego niestandardowego dostawcy ponawiania prób:

    <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"/>
    

Uwaga / Notatka

Dostawcy logiki ponawiania prób będą buforowane przy pierwszym użyciu połączenia lub polecenia do użycia w przyszłości w okresie istnienia aplikacji.

Uwaga / Notatka

Błędy podczas odczytywania pliku konfiguracji aplikacji dla ustawień logiki ponawiania nie spowodują błędów w aplikacji. Zamiast tego zostanie użyta wartość domyślna SqlConfigurableRetryFactory.CreateNoneRetryProvider .

Możesz użyć śledzenia źródła zdarzeń, aby zweryfikować lub rozwiązać problemy z konfigurowaniem logiki ponawiania prób. Aby uzyskać więcej informacji, zobacz Włączanie śledzenia zdarzeń w programie SqlClient.

Zobacz także