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
Ten artykuł pokazuje, jak utworzyć dostawcę wykładniczego ponawiania prób i przypisać go do SqlConnection. Dostawca ponownie próbuje wpisać wbudowaną listę błędów połączeniowych sterownika i próbuje otworzyć połączenie do pięciu razy.
Wymagania wstępne
- Microsoft. Data.SqlClient 3.0 lub nowsza wersja.
- Parametry połączenia dla programu SQL Server, usługi Azure SQL Database, usługi Azure SQL Managed Instance lub bazy danych SQL w usłudze Microsoft Fabric.
Konfiguruj dostawcę powtórek połączeń
Zdefiniuj opcje powtórek. Zostaw
TransientErrorstak,nullaby dostawca korzystał z wbudowanej listy błędów przejściowych.// 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) };Stwórz dostawcę spośród dostępnych opcji.
// Create a retry logic provider SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);Przydziel dostawcę przed otwarciem połączenia.
// 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 pozwala na jedno podejście początkowe i maksymalnie cztery ponowne próby. Dostawca wykładniczy zwiększa interwał między próbami i dodaje losowe jitter.
MaxTimeInterval Ogranicza maksymalną wartość każdego pojedynczego opóźnienia, a nie łączny czas dla wszystkich prób.
Skonfiguruj ponawianie poleceń
Stwórz osobnego dostawcę i przypisz go do SqlCommand.RetryLogicProvider. Ustaw SqlRetryLogicOption.AuthorizedSqlCondition na predykat, który zwraca true tylko dla poleceń, które aplikacja może bezpiecznie powtarzać.
Caution
Wbudowany dostawca nie próbuje ponownie wykonać polecenia, gdy połączenie ma aktywną transakcję. Jeśli przejściowa awaria unieważnia transakcję, cofnij się i spróbuj ponownie całą transakcję. Nie ponawiaj tylko instrukcji, która zakończyła się niepowodzeniem.
To ustawienie SqlRetryLogicOption.TransientErrors zastępuje wbudowaną listę błędów sterownika. Aby rozszerzyć linię bazową bez utraty domyślnych wartości, zobacz Rozszerzyj wbudowaną listę błędów przejściowych.