Бөлісу құралы:


Настраиваемая логика повторных попыток в SqlClient — введение

Область применения: платформа .NET Framework .NET Standard

Скачать ADO.NET

Настраиваемая логика повторных попыток позволяет разработчикам и администраторам управлять поведением приложения, когда происходят временные сбои. Эта возможность позволяет добавить элементы управления во время подключения или выполнения команды. Элементы управления можно определить с помощью кода или файла конфигурации приложения. Для управления поведением попыток повтора можно определить временные номера ошибок и свойства повторных попыток. Кроме того, для фильтрации определенных инструкций SQL можно использовать регулярные выражения.

Компоненты возможности

Возможность включает три основных компонента:

  1. Базовые API: разработчики могут использовать эти интерфейсы для реализации собственной логики повторов в объектах SqlConnection и SqlCommand. Дополнительные сведения см. в статье Базовые API настраиваемой логики повторных попыток в SqlClient.
  2. Предварительно определенная логика повторных попыток: встроенные методы логики повторных попыток с использованием базовых API доступны из класса SqlConfigurableRetryFactory. Дополнительные сведения см. в статье Внутренние поставщики логики повторных попыток в SqlClient.
  3. Схема файла конфигурации: позволяет указать логику повторных попыток по умолчанию для SqlConnection и SqlCommand в приложении. Дополнительные сведения см. в статье Настраиваемый файл конфигурации логики повторных попыток в SqlClient.

Быстрое начало работы

Чтобы использовать эту возможность, выполните следующие четыре шага:

  1. Включите переключатель безопасности в предварительной версии. Дополнительные сведения о том, как включить параметр-переключатель безопасности AppContext, см. в разделе Включение настраиваемой логики повторных попыток.

  2. Определите параметры логики повторных попыток с помощью SqlRetryLogicOption.
    В этом примере задаются некоторые параметры повторных попыток, а остальная часть этих параметров будет использовать значения по умолчанию.

    // 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)
    };
    
  3. Создайте поставщик логики повторных попыток с помощью объекта SqlRetryLogicOption.

    // Create a retry logic provider
    SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);
    
  4. Присвойте экземпляр SqlRetryLogicBaseProvider свойству SqlConnection.RetryLogicProvider или SqlCommand.RetryLogicProvider.
    В этом примере команда открытия подключения повторит попытку, если одна из временных ошибок во внутреннем списке SqlConfigurableRetryFactory возникнет максимум пять раз.

    // 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();
    

Примечание.

Эти шаги одинаковы для выполнения команды, кроме того, что вместо этого вы назначаете поставщик логики повторных попыток свойству SqlCommand.RetryLogicProvider перед выполнением команды.

См. также