Delen via


Configureerbaar configuratiebestand voor logica voor opnieuw proberen met SqlClient

Van toepassing op: .NET Framework .NET Standard

ADO.NET downloaden

De standaardmethode voor opnieuw proberen wanneer de veiligheidsschakelaar is ingeschakeld, is voor SqlConfigurableRetryFactory.CreateNoneRetryProvider beide SqlConnection en SqlCommand. U kunt een andere methode voor opnieuw proberen opgeven met behulp van een configuratiebestand.

Configuratiesecties

Standaardopties voor logica voor opnieuw proberen voor een toepassing kunnen worden gewijzigd door de volgende secties toe te voegen in de configSections sectie van het configuratiebestand:

  • SqlConfigurableRetryLogicConnection: als u de standaardlogica voor opnieuw proberen wilt opgeven voor SqlConnection.
<section name="SqlConfigurableRetryLogicConnection"
        type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
  • SqlConfigurableRetryLogicCommand: als u de standaardlogica voor opnieuw proberen wilt opgeven voor SqlCommand.
<section name="SqlConfigurableRetryLogicCommand"
        type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>

Opmerking

De volgende configuraties moeten worden opgegeven in de configuration sectie. Declareer deze nieuwe secties om de standaardlogica voor opnieuw proberen te configureren via een toepassingsconfiguratiebestand.

Sectie Verbinding

De volgende kenmerken kunnen worden gebruikt om de standaardlogica voor opnieuw proberen op te geven voor alle SqlConnection exemplaren in een toepassing:

  • numberOfTries: stelt het aantal keren in dat moet worden geprobeerd.

  • deltaTime: stelt het tijdsinterval tussen tussenruimtes in als een TimeSpan object.

  • minTime: stelt het toegestane minimale interval tussenruimtetijd in als een TimeSpan object.

  • maxTime: stelt het toegestane maximale interval tussenruimtetijd in als een TimeSpan object.

  • tijdelijkefout: hiermee stelt u de lijst met tijdelijke foutnummers in waarop u het opnieuw wilt proberen.

  • retryMethod: hiermee geeft u een maker van een methode voor opnieuw proberen op die de configuratie voor opnieuw proberen ontvangt via een SqlRetryLogicOption parameter en een SqlRetryLogicBaseProvider object retourneert.

  • retryLogicType: stelt een aangepaste logische provider voor opnieuw proberen in, die de makers van de methode voor opnieuw proberen bevat die de retryMethod. Deze methoden moeten voldoen aan de criteria voor retryMethod. De volledig gekwalificeerde typenaam van de provider moet worden gebruikt. Zie Volledig gekwalificeerde typenamen opgeven voor meer informatie.

Opmerking

Het is niet vereist om op retryLogicType te geven of u de ingebouwde providers voor nieuwe pogingen gebruikt. Zie Interne logische providers voor nieuwe pogingen in SqlClient om de ingebouwde providers voor nieuwe pogingen te vinden.

Opdrachtsectie

Het volgende kenmerk kan ook worden ingesteld voor alle SqlCommand exemplaren in een toepassing:

  • authorizedSqlCondition: hiermee stelt u een reguliere expressie vooraf in om SqlCommand.CommandText specifieke SQL-instructies te filteren.

Opmerking

De reguliere expressie is hoofdlettergevoelig.

Voorbeelden

  • Pogingen om een verbinding tot drie keer tot stand te brengen met een vertraging van ongeveer 1 seconde tussen pogingen met behulp van de SqlConfigurableRetryFactory.CreateFixedRetryProvider methode en de standaard tijdelijke foutenlijst:

    <SqlConfigurableRetryLogicConnection retryMethod ="CreateFixedRetryProvider" 
                                            numberOfTries ="3" deltaTime ="00:00:01"/>
    
  • Pogingen om een verbinding tot vijf keer tot stand te brengen met een vertraging van maximaal 45 seconden tussen pogingen met behulp van de SqlConfigurableRetryFactory.CreateExponentialRetryProvider methode en de standaard tijdelijke foutenlijst:

    <SqlConfigurableRetryLogicConnection retryMethod ="CreateExponentialRetryProvider" 
                        numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"/>
    
  • Probeert een opdracht maximaal vier keer uit te voeren met een vertraging tussen 2 en 30 seconden met behulp van de SqlConfigurableRetryFactory.CreateIncrementalRetryProvider methode en de standaard tijdelijke foutenlijst:

    <SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider"
                        numberOfTries ="4" deltaTime ="00:00:02" maxTime ="00:00:30"/>
    
  • Probeert een opdracht maximaal acht keer uit te voeren met een vertraging van één seconde tot één minuut. Het is beperkt tot opdrachten met CommandText het woord SELECT en uitzonderingsnummers 102 of 997. Hierbij wordt gebruikgemaakt van de ingebouwde SqlConfigurableRetryFactory.CreateIncrementalRetryProvider methode:

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

Opmerking

In de volgende twee voorbeelden vindt u de aangepaste broncode voor opnieuw proberen van configureerbare logische kern-API's voor opnieuw proberen in SqlClient. Hierbij wordt ervan uitgegaan dat de CreateCustomProvider methode is gedefinieerd in de CustomCRL_Doc.CustomRetry klasse in de CustomCRL_Doc.dll assembly die zich in de uitvoermap van de toepassing bevindt.

  • Pogingen om een verbinding tot vijf keer tot stand te brengen, met een vertraging tussen 3 en 45 seconden, foutnummers 4060, 997 en 233 in de lijst, en met behulp van de opgegeven aangepaste provider voor opnieuw proberen:

    <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"/>
    
  • Dit voorbeeld gedraagt zich als de vorige:

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

Opmerking

Logische providers voor opnieuw proberen worden in de cache opgeslagen bij het eerste gebruik van een verbinding of opdracht voor toekomstig gebruik tijdens de levensduur van een toepassing.

Opmerking

Fouten bij het lezen van een toepassingsconfiguratiebestand voor logische instellingen voor opnieuw proberen veroorzaken geen fouten in de toepassing. In plaats daarvan wordt de standaardwaarde SqlConfigurableRetryFactory.CreateNoneRetryProvider gebruikt.

U kunt tracering van gebeurtenisbronnen gebruiken om problemen met het configureren van logica voor opnieuw proberen te controleren of op te lossen. Zie Gebeurtenistracering inschakelen in SqlClient voor meer informatie.

Zie ook