Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz 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
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 elementuretryMethod. 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
CommandTextwyrazySELECTi 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.