Introduzione alla logica di ripetizione dei tentativi configurabile in SqlClient

Si applica a: .NET Framework .NET .NET Standard

Scarica ADO.NET

La logica di ripetizione dei tentativi configurabile consente agli sviluppatori e agli amministratori di gestire il comportamento dell'applicazione quando si verificano errori temporanei. La funzionalità aggiunge controlli durante la connessione o l'esecuzione di un comando. I controlli possono essere definiti tramite codice o tramite un file di configurazione dell'applicazione. I numeri di errore temporanei e le proprietà di ripetizione dei tentativi possono essere definiti per controllare il comportamento della ripetizione. Per filtrare istruzioni SQL specifiche, è anche possibile usare espressioni regolari.

Componenti della funzionalità

La funzionalità è costituita da tre componenti principali:

  1. API di base: gli sviluppatori possono usare queste interfacce per implementare la propria logica di ripetizione dei tentativi sugli oggetti SqlConnection e SqlCommand. Per altre informazioni, vedere API principali della logica di ripetizione dei tentativi configurabile in SqlClient.
  2. Logica di ripetizione dei tentativi configurabile predefinita: i metodi della logica di ripetizione dei tentativi predefinita usano le API principali della classe SqlConfigurableRetryFactory. Per altre informazioni, vedere Provider di logica di ripetizione dei tentativi interni in SqlClient.
  3. Schema file di configurazione: specifica la logica di ripetizione dei tentativi predefinita per SqlConnection e SqlCommand in un'applicazione. Per altre informazioni, vedere File di configurazione della logica di ripetizione dei tentativi configurabile con SqlClient.

Avvio rapido

Per usare la funzionalità, seguire questi quattro passaggi:

  1. Abilitare l'opzione di sicurezza nella versione di anteprima. Per informazioni su come abilitare l'opzione di sicurezza AppContext, vedere Abilitare la logica di ripetizione dei tentativi configurabile.

  2. Definire le opzioni di logica di ripetizione dei tentativi tramite SqlRetryLogicOption.
    In questo esempio, alcuni parametri di ripetizione dei tentativi vengono impostati, mentre il resto usa i valori predefiniti.

    // 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. Creare un provider di logica di ripetizione dei tentativi tramite l'oggetto SqlRetryLogicOption.

    // Create a retry logic provider
    SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);
    
  4. Assegnare l'istanza SqlRetryLogicBaseProvider a SqlConnection.RetryLogicProvider o SqlCommand.RetryLogicProvider.
    In questo esempio, se si verifica un errore temporaneo il comando aperto per la connessione esegue nuovamente un tentativo nell'elenco interno SqlConfigurableRetryFactory per un massimo di cinque volte.

    // 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

Questi passaggi sono gli stessi per un'esecuzione di comando, ad eccezione del fatto che si assegna il provider di ripetizione dei tentativi alla proprietà SqlCommand.RetryLogicProvider prima di eseguire il comando.

Vedi anche