Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: .NET Framework
.NET .NET
Standard
Standardmetoden för återförsök när säkerhetsbrytaren är aktiverad är SqlConfigurableRetryFactory.CreateNoneRetryProvider för både SqlConnection och SqlCommand. Du kan ange en annan återförsöksmetod med hjälp av en konfigurationsfil.
Konfigurationsavsnitt
Standardalternativ för omprövningslogik för ett program kan ändras genom att lägga till följande avsnitt i configSections avsnittet i konfigurationsfilen:
-
SqlConfigurableRetryLogicConnection: för att ange standardlogik för återförsök för SqlConnection.
<section name="SqlConfigurableRetryLogicConnection"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
-
SqlConfigurableRetryLogicCommand: för att ange standardlogik för återförsök för SqlCommand.
<section name="SqlConfigurableRetryLogicCommand"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>
Anmärkning
Följande konfigurationer bör anges i avsnittet configuration . Deklarera de här nya avsnitten för att konfigurera standardlogik för återförsök via en programkonfigurationsfil.
Avsnittet Anslutning
Följande attribut kan användas för att ange standardlogik för återförsök för alla SqlConnection instanser i ett program:
numberOfTries: anger hur många gånger du ska prova.
deltaTime: anger mellanrumsintervallet som ett TimeSpan objekt.
minTime: anger det tillåtna minsta mellanrumsintervallet som ett TimeSpan objekt.
maxTime: anger det tillåtna maximala mellanrumsintervallet som ett TimeSpan objekt.
transientErrors: anger listan över tillfälliga felnummer som ska försökas igen.
retryMethod: anger en återförsöksmetodskapare som tar emot återförsökskonfigurationen via en SqlRetryLogicOption parameter och returnerar ett SqlRetryLogicBaseProvider objekt.
retryLogicType: anger en anpassad logikprovider för återförsök som innehåller de återförsöksmetodskapare som tillhandahåller
retryMethod. Dessa metoder bör uppfylla kriterierna förretryMethod. Providerns fullständigt kvalificerade typnamn ska användas. Mer information finns i Ange fullständigt kvalificerade typnamn.
Anmärkning
Du behöver inte ange retryLogicType om du använder de inbyggda återförsöksprovidrar. Information om hur du hittar de inbyggda återförsöksprovidrar finns i Interna logikprovidrar för återförsök i SqlClient.
Kommandoavsnitt
Följande attribut kan också anges för alla SqlCommand instanser i ett program:
- authorizedSqlCondition: Anger ett reguljärt uttryck för omprövning för SqlCommand.CommandText att filtrera specifika SQL-instruktioner.
Anmärkning
Det reguljära uttrycket är skiftlägeskänsligt.
Examples
Försöker upprätta en anslutning upp till tre gånger med en ungefärlig fördröjning på 1 sekund mellan försök med SqlConfigurableRetryFactory.CreateFixedRetryProvider hjälp av metoden och standardlistan för tillfälliga fel:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateFixedRetryProvider" numberOfTries ="3" deltaTime ="00:00:01"/>Försöker upprätta en anslutning upp till fem gånger med upp till 45 sekunders fördröjning mellan försök med SqlConfigurableRetryFactory.CreateExponentialRetryProvider hjälp av metoden och standardlistan för tillfälliga fel:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateExponentialRetryProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"/>Försöker köra ett kommando upp till fyra gånger med en fördröjning mellan 2 och 30 sekunder med hjälp SqlConfigurableRetryFactory.CreateIncrementalRetryProvider av metoden och standardlistan för tillfälliga fel:
<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="4" deltaTime ="00:00:02" maxTime ="00:00:30"/>Försöker köra ett kommando upp till åtta gånger med en fördröjning från en sekund till en minut. Det är begränsat till kommandon som
CommandTextinnehåller ordetSELECToch undantagsnumren 102 eller 997. Den använder den inbyggda SqlConfigurableRetryFactory.CreateIncrementalRetryProvider metoden:<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="8" deltaTime ="00:00:01" maxTime ="00:01:00" transientErrors="102, 997" authorizedSqlCondition="\b(SELECT)\b"/>
Anmärkning
I de kommande två exemplen hittar du den anpassade logikkällkoden för omförsök från Konfigurera om logikkärn-API:er i SqlClient. Det antas att CreateCustomProvider metoden definieras i CustomCRL_Doc.CustomRetry klassen i CustomCRL_Doc.dll sammansättningen som finns i programmets körkatalog.
Försöker upprätta en anslutning upp till fem gånger, med en fördröjning mellan 3 och 45 sekunder, felnummer 4060, 997 och 233 i listan och med hjälp av den angivna anpassade återförsöksprovidern:
<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"/>Det här exemplet fungerar som det föregående:
<SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc" retryMethod ="CreateCustomProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45" transientErrors ="4060, 997, 233"/>
Anmärkning
Omförsök av logikprovidrar cachelagras vid den första användningen av en anslutning eller ett kommando för framtida användning under programmets livslängd.
Anmärkning
Eventuella fel vid läsning av en programkonfigurationsfil för logikinställningar för återförsök orsakar inga fel i programmet. Standardvärdet SqlConfigurableRetryFactory.CreateNoneRetryProvider används i stället.
Du kan använda spårning av händelsekällor för att verifiera eller felsöka problem med att konfigurera omförsökslogik. Mer information finns i Aktivera händelsespårning i SqlClient.