Konfigurovatelný konfigurační soubor logiky opakování pomocí SqlClient

Platí pro: .NET Framework .NET Standard

Stáhnout ADO.NET

Výchozí metoda opakování, pokud je povolen bezpečnostní spínač je SqlConfigurableRetryFactory.CreateNoneRetryProvider pro obě SqlConnection a SqlCommand. Pomocí konfiguračního souboru můžete zadat jinou metodu opakování.

Oddíly konfigurace

Výchozí možnosti logiky opakování pro aplikaci je možné změnit přidáním následujících částí do configSections oddílu konfiguračního souboru:

  • SqlConfigurableRetryLogicConnection: Chcete-li zadat výchozí logiku opakování pro SqlConnection.
<section name="SqlConfigurableRetryLogicConnection"
        type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
  • SqlConfigurableRetryLogicCommand: Chcete-li zadat výchozí logiku opakování pro SqlCommand.
<section name="SqlConfigurableRetryLogicCommand"
        type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>

Poznámka:

V této části by měly být zadány configuration následující konfigurace. Deklarujte tyto nové oddíly pro konfiguraci výchozí logiky opakování prostřednictvím konfiguračního souboru aplikace.

Část Připojení

Následující atributy lze použít k určení výchozí logiky opakování pro všechny SqlConnection instance v aplikaci:

  • numberOfTries: nastaví počet pokusů.

  • deltaTime: nastaví časový interval mezery TimeSpan jako objekt.

  • minTime: Nastaví povolený minimální časový interval mezery TimeSpan jako objekt.

  • maxTime: Nastaví povolený maximální časový interval mezery TimeSpan jako objekt.

  • přechodné chyby: Nastaví seznam přechodných chybových čísel, u kterých se má opakovat.

  • retryMethod: určuje tvůrce metody opakování, který přijímá konfiguraci opakování prostřednictvím parametru SqlRetryLogicOption a vrací SqlRetryLogicBaseProvider objekt.

  • retryLogicType: nastaví vlastního zprostředkovatele logiky opakování, který obsahuje tvůrce metody opakování, které poskytují retryMethod. Tyto metody by měly splňovat kritéria pro retryMethod. Měl by se použít plně kvalifikovaný název typu poskytovatele. Další informace naleznete v tématu Zadání plně kvalifikovaných názvů typů.

Poznámka:

Není nutné zadávat retryLogicType , jestli používáte předdefinované zprostředkovatele opakování. Informace o integrovaných zprostředkovatelích opakování najdete v tématu Interní zprostředkovatelé logiky opakování v SqlClient.

Oddíl příkazu

Následující atribut lze také nastavit pro všechny SqlCommand instance v aplikaci:

  • authorizedSqlCondition: Nastaví regulární výraz před opakováním pro SqlCommand.CommandText filtrování konkrétních příkazů SQL.

Poznámka:

Regulární výraz rozlišují malá a velká písmena.

Examples

  • Pokusí se navázat připojení až třikrát s přibližným 1sekundovým zpožděním mezi pokusy pomocí SqlConfigurableRetryFactory.CreateFixedRetryProvider metody a výchozího seznamu přechodných chyb:

    <SqlConfigurableRetryLogicConnection retryMethod ="CreateFixedRetryProvider" 
                                            numberOfTries ="3" deltaTime ="00:00:01"/>
    
  • Pokusí se navázat připojení až pětkrát s až 45sekundovým zpožděním mezi pokusy pomocí SqlConfigurableRetryFactory.CreateExponentialRetryProvider metody a výchozího seznamu přechodných chyb:

    <SqlConfigurableRetryLogicConnection retryMethod ="CreateExponentialRetryProvider" 
                        numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"/>
    
  • Pokusí se spustit příkaz až čtyřikrát se zpožděním mezi 2 a 30 sekundami pomocí SqlConfigurableRetryFactory.CreateIncrementalRetryProvider metody a výchozího seznamu přechodných chyb:

    <SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider"
                        numberOfTries ="4" deltaTime ="00:00:02" maxTime ="00:00:30"/>
    
  • Pokusí se spustit příkaz až osmkrát se zpožděním od jedné sekundy do jedné minuty. Je omezený na příkazy obsahující CommandText slovo SELECT a čísla výjimek 102 nebo 997. Používá integrovanou SqlConfigurableRetryFactory.CreateIncrementalRetryProvider metodu:

    <SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" 
                            numberOfTries ="8" deltaTime ="00:00:01" maxTime ="00:01:00"
                            transientErrors="102, 997"
                            authorizedSqlCondition="\b(SELECT)\b"/>
    

Poznámka:

V následujících dvou ukázkách najdete vlastní zdrojový kód logiky opakování z konfigurovatelných rozhraní API jádra logiky v SqlClient. Předpokládá se, že CreateCustomProvider metoda je definována ve CustomCRL_Doc.CustomRetry třídě v CustomCRL_Doc.dll sestavení, které je v prováděcím adresáři aplikace.

  • Pokusí se navázat připojení až pětkrát se zpožděním mezi 3 a 45 sekundami, čísly chyb 4060, 997 a 233 v seznamu a pomocí zadaného vlastního zprostředkovatele opakování:

    <SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
                        retryMethod ="CreateCustomProvider" 
                        numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"
                        transientErrors ="4060, 997, 233"/>
    
  • Tato ukázka se chová stejně jako předchozí:

    <SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc"
                        retryMethod ="CreateCustomProvider" 
                        numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"
                        transientErrors ="4060, 997, 233"/>
    

Poznámka:

Poskytovatelé logiky opakování se při prvním použití na připojení nebo příkazu uloží do mezipaměti pro budoucí použití během životnosti aplikace.

Poznámka:

Jakékoli chyby při čtení konfiguračního souboru aplikace pro nastavení logiky opakování nezpůsobí chyby v aplikaci. Místo toho se použije výchozí hodnota SqlConfigurableRetryFactory.CreateNoneRetryProvider .

Trasování zdroje událostí můžete použít k ověření nebo řešení potíží s konfigurací logiky opakování. Další informace naleznete v tématu Povolení trasování událostí v SqlClient.

Viz také