Introdução à lógica de repetição configurável no SqlClient

Aplicável a: .NET Framework .NET .NET Standard

Baixar ADO.NET

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

Componentes do recurso

Esse recurso consiste em três componentes principais:

  1. APIs principais: os desenvolvedores podem usar essas interfaces para implementar a lógica de repetição deles mesmos nos objetos SqlConnection e SqlCommand. Para obter mais informações, confira APIs principais de lógica de repetição configurável no SqlClient.
  2. Lógica de repetição configurável predefinida: os métodos de lógica de repetição internos que usam as APIs principais podem ser acessados por meio da classe SqlConfigurableRetryFactory. Para obter mais informações, confira Provedores internos de lógica de repetição no SqlClient.
  3. Esquema do arquivo de configuração: para especificar a lógica de repetição padrão de SqlConnection e SqlCommand em um aplicativo. Para obter mais informações, confira arquivo de configuração da lógica de repetição configurável no SqlClient.

Início rápido

Para usar esse recurso, siga estas quatro etapas:

  1. Habilite a opção de segurança na versão prévia. Para obter informações sobre como habilitar a opção de segurança do AppContext, confira Habilitar a lógica de repetição configurável.

  2. Defina as opções da lógica de repetição usando SqlRetryLogicOption.
    Neste exemplo, alguns dos parâmetros de repetição são definidos e o restante deles usa 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)
    };
    
  3. Crie um provedor de lógica de repetição usando o seu objeto SqlRetryLogicOption.

    // Create a retry logic provider
    SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);
    
  4. Atribua a instância SqlRetryLogicBaseProvider a SqlConnection.RetryLogicProvider ou SqlCommand.RetryLogicProvider.
    Neste exemplo, o comando Connection Open tentará novamente por no máximo cinco vezes se resultar em um dos erros transitórios da lista interna 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();
    

Observação

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

Veja também