Introducción a la lógica de reintento configurable en SqlClient

Se aplica a: .NET Framework .NET .NET Standard

Descargar ADO.NET

La lógica de reintento configurable permite a los administradores y desarrolladores administrar el comportamiento de las aplicaciones cuando se producen errores transitorios. Esta característica agrega controles durante la conexión o la ejecución de un comando. Los controles se pueden definir mediante código o un archivo de configuración de la aplicación. Los números de error transitorio y las propiedades de reintento se pueden definir para controlar el comportamiento de reintento. También se pueden usar expresiones regulares para filtrar instrucciones SQL específicas.

Componentes de la característica

Esta característica consta de tres componentes principales:

  1. API de núcleo: los desarrolladores pueden usar estas interfaces para implementar su propia lógica de reintento en objetos SqlConnection y SqlCommand. Para obtener más información, consulte API de núcleo con lógica de reintento configurables en SqlClient.
  2. Lógica de reintento configurable predefinida: los métodos de lógica de reintento integrados que usan las API de núcleo son accesibles desde la clase SqlConfigurableRetryFactory. Para obtener más información, consulte Proveedores de lógica de reintento internos en SqlClient.
  3. Esquema del archivo de configuración: para especificar la lógica de reintento predeterminada para SqlConnection y SqlCommand en una aplicación. Para obtener más información, consulte Archivo de configuración de lógica de reintento configurable con SqlClient.

Inicio rápido

Para usar esta característica, siga estos cuatro pasos:

  1. Habilite el modificador de seguridad en la versión preliminar. Para obtener información sobre cómo habilitar el modificador de seguridad de AppContext, consulte Habilitación de lógica de reintento configurable.

  2. Defina las opciones de lógica de reintento mediante SqlRetryLogicOption.
    En este ejemplo, se han establecido algunos parámetros de reintento y el resto de ellos usará los valores predeterminados.

    // 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. Cree un proveedor de lógica de reintento mediante el objeto SqlRetryLogicOption.

    // Create a retry logic provider
    SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);
    
  4. Asigne la instancia SqlRetryLogicBaseProvider a SqlConnection.RetryLogicProvider o a SqlCommand.RetryLogicProvider.
    En este ejemplo, el comando de apertura de la conexión volverá a intentarlo si alcanza uno de los errores transitorios en la lista interna SqlConfigurableRetryFactory hasta un máximo de cinco veces.

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

Nota

Estos pasos son los mismos para la ejecución de un comando, salvo que en su lugar asignaría el proveedor de reintentos a la propiedad SqlCommand.RetryLogicProvider antes de ejecutar el comando.

Vea también