Partilhar via


Lógica de repetição configurável na introdução do SqlClient

Aplica-se a: .NET Framework .NET .NET Standard

Baixar ADO.NET

A lógica de repetição configurável permite que desenvolvedores e administradores gerenciem o comportamento do aplicativo quando ocorrem falhas transitórias. O recurso adiciona controles durante a conexão ou execução de um comando. Os controles podem ser definidos através de código ou um arquivo de configuração do aplicativo. Números de erro transitórios e propriedades de repetição podem ser definidos para controlar o comportamento de nova tentativa. Além disso, expressões regulares podem ser usadas para filtrar instruções SQL específicas.

Componentes de recursos

Esta característica consiste em três componentes principais:

  1. APIs principais: os desenvolvedores podem usar essas interfaces para implementar sua própria lógica de repetição em SqlConnection objetos e SqlCommand objetos. Para obter mais informações, consulte APIs principais de lógica de repetição configuráveis no SqlClient.
  2. Lógica de repetição configurável predefinida: os métodos de lógica de repetição internos usando as APIs principais são acessíveis a partir da SqlConfigurableRetryFactory classe. Para obter mais informações, consulte Provedores lógicos de repetição interna em SqlClient.
  3. Esquema do arquivo de configuração: para especificar a lógica de repetição padrão para SqlConnection e SqlCommand em um aplicativo. Para obter mais informações, consulte Arquivo de configuração de lógica de repetição configurável com SqlClient.

Início rápido

Para utilizar esta funcionalidade, siga estes passos:

  1. Defina as opções de lógica de repetição usando SqlRetryLogicOption.
    Neste exemplo, alguns dos parâmetros de repetição são definidos e o restante deles usará os valores padrão.

    // 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)
    };
    
  2. Crie um provedor de lógica de repetição usando seu SqlRetryLogicOption objeto.

    // Create a retry logic provider
    SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);
    
  3. Atribua a SqlRetryLogicBaseProvider instância ao SqlConnection.RetryLogicProvider ou SqlCommand.RetryLogicProvider.
    Neste exemplo, o comando connection open tentará novamente se acertar um dos erros transitórios na SqlConfigurableRetryFactory lista interna por no máximo cinco vezes.

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

Observação

Essas etapas são as mesmas para uma execução de comando, exceto que você atribuiria o provedor de repetição à SqlCommand.RetryLogicProvider propriedade antes de executar o comando.

Consulte também