Kommentar
Å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
Använd en applikationskonfigurationsfil för att tilldela standardretry-leverantörer till varje SqlConnection eller SqlCommand instans i processen. Utan dessa avsnitt eller en providertilldelning på objektnivå använder SqlClient SqlConfigurableRetryFactory.CreateNoneRetryProvider och gör inget nytt försök.
Konfigurationsavsnitt
Deklarera återförsökssektionerna inom elementet configSections . Sektionsdeklarationer måste visas före motsvarande konfigurationsvärden.
-
SqlConfigurableRetryLogicConnection: Sätter standardleverantören för SqlConnection.
<section name="SqlConfigurableRetryLogicConnection"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
-
SqlConfigurableRetryLogicCommand: Sätter standardleverantören för SqlCommand.
<section name="SqlConfigurableRetryLogicCommand"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>
Anslutningsavsnitt
Sätt standardlogiken för återförsök för alla SqlConnection instanser i applikationen genom att använda följande attribut:
numberOfTries: Sätter det totala antalet försök, inklusive den initiala operationen. Det giltiga intervallet är 1 till 60.
deltaTime: Sätter gap-tidsintervallet som ett TimeSpan objekt.
minTime: Sätter det tillåtna minsta gap-tidsintervallet som ett TimeSpan objekt.
maxTime: Sätter det tillåtna maximala gap-tidsintervallet som ett TimeSpan objekt.
transientErrors: Sätter en komma-separerad lista med felnummer att försöka om. Om du utelämnar det använder leverantören den inbyggda listan över tillfälliga fel. Om du anger det ersätter din lista den inbyggda listan.
retryMethod: Specificerar en retry-metodskapare som tar emot retry-konfigurationen via en SqlRetryLogicOption parameter och returnerar ett SqlRetryLogicBaseProvider objekt.
retryLogicType: Sätter en anpassad retry-logikleverantör som innehåller retry-metodens skapare identifierade med
retryMethod. Dessa metoder måste uppfylla kriterierna förretryMethod. Använd leverantörens fullt kvalificerade typnamn. Mer information finns i Ange fullständigt kvalificerade typnamn.
Anmärkning
Du behöver inte specificera retryLogicType när du använder en inbyggd leverantör. För tillgängliga metoder, se Inbyggda retry-logikleverantörer i SqlClient.
Kommandoavsnitt
Ställ in standardlogiken för återförsök för alla SqlCommand instanser i applikationen genom att använda connection-section-attributen och följande kommandospecifika attribut:
- authorizedSqlCondition: Sätter ett reguljärt uttryck som SqlCommand.CommandText måste matcha innan leverantören försöker om kommandot. Om uttrycket inte stämmer körs kommandot en gång utan omförsökslogik.
Anmärkning
Det reguljära uttrycket är kasuskänsligt. Inkludera ett infogat alternativ, till exempel (?i), när du behöver skiftlägesokänslig matchning.
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öken med hjälp av metoden SqlConfigurableRetryFactory.CreateFixedRetryProvider och standardlistan över tillfälliga fel:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateFixedRetryProvider" numberOfTries ="3" deltaTime ="00:00:01"/>Gör upp till fem försök att upprätta en anslutning, med upp till 45 sekunders fördröjning mellan försöken, med metoden SqlConfigurableRetryFactory.CreateExponentialRetryProvider och standardlistan över 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 med
CommandTextsom innehåller ordetSELECTmed versaler och felnummer 102 eller 997. Att specificeratransientErrorsersätter den inbyggda listan, så inga andra fel kan göras om. I följande exempel används SqlConfigurableRetryFactory.CreateIncrementalRetryProvider:<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="8" deltaTime ="00:00:01" maxTime ="00:01:00" transientErrors="102, 997" authorizedSqlCondition="\b(SELECT)\b"/>
Anmärkning
I följande två exempel finns källkoden för anpassad logik för återförsök från Kärn-API:er för konfigurerbar logik för återförsök 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"/>
Viktigt!
Den första förfrågan för någon av de konfigurerade standardinställningarna gör att SqlClient laddar och cachar både anslutnings- och kommandoleverantörerna. Ändringar i konfigurationsfilen påverkar inte någon av leverantörerna förrän processen startas om.
Fel vid läsning av omprövade inställningar gör att applikationen inte misslyckas. SqlClient spårar konfigurationsfelet och använder SqlConfigurableRetryFactory.CreateNoneRetryProvider, så att operationer körs utan omförsök.
Använd händelsekällspårning för att verifiera eller felsöka återförsökskonfigurationen. Mer information finns i Aktivera händelsespårning i SqlClient.