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
Den här artikeln visar hur man skapar en exponentiell återprövningsleverantör och tilldelar den till en SqlConnection. Leverantören försöker om drivrutinens inbyggda lista över övergående anslutningsfel och försöker öppna anslutningen upp till fem gånger.
Förutsättningar
- Microsoft. Data.SqlClient 3.0 eller en senare version.
- En anslutningssträng för SQL Server, Azure SQL Database, Azure SQL Managed Instance eller SQL-databas i Microsoft Fabric.
Konfigurera en anslutningsåterprövningsleverantör
Definiera alternativen för omprövning. Låt
TransientErrorsvaranullså att providern använder den inbyggda listan över tillfälliga fel.// 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) };Skapa en leverantör bland alternativen.
// Create a retry logic provider SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);Tilldela leverantören innan du öppnar anslutningen.
// 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();
NumberOfTries = 5 tillåter ett första försök och upp till fyra försök. Den exponentiella leverantören ökar intervallet mellan försöken och lägger till slumpmässig jitter.
MaxTimeInterval begränsar varje enskild fördröjning, inte den totala tiden som förflutit för alla försök.
Konfigurera nya försök för kommandon
Skapa en separat leverantör och tilldela den till SqlCommand.RetryLogicProvider. Sätt SqlRetryLogicOption.AuthorizedSqlCondition på ett predikat som endast returnerar true för kommandon som din applikation säkert kan upprepa.
Caution
En inbyggd leverantör försöker inte om ett kommando när anslutningen har en aktiv transaktion. Om ett tillfälligt fel ogiltigförklarar en transaktion, rulla tillbaka och försök om hela transaktionen. Försök inte köra om endast den sats som misslyckades.
Inställningen SqlRetryLogicOption.TransientErrors ersätter drivrutinens inbyggda fellista. För att utöka baslinjen utan att förlora standardvärdena, se Utöka den inbyggda listan över övergående fel.