Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: .NET Framework
.NET
Standard
Dit artikel laat zien hoe je een exponentiële herkansingsprovider creëert en deze toewijst aan een SqlConnection. De provider probeert de ingebouwde lijst van tijdelijke verbindingsfouten van de driver opnieuw en probeert de verbinding tot vijf keer te openen.
Prerequisites
- Microsoft. Data.SqlClient 3.0 of een latere versie.
- Een verbindingsreeks voor SQL Server, Azure SQL Database, Azure SQL Managed Instance, of SQL database in Microsoft Fabric.
Configureer een verbindingsherhalingsprovider
Stel de opties voor opnieuw proberen in. Laat
TransientErrorsalsnullzodat de provider de ingebouwde lijst met tijdelijke fouten gebruikt.// 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) };Maak een provider aan op basis van de opties.
// Create a retry logic provider SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);Wijs de provider toe voordat je de verbinding opent.
// 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 staat één eerste poging toe en tot vier herpogingen. De exponentiële provider verhoogt het interval tussen pogingen en voegt willekeurige jitter toe.
MaxTimeInterval Beperkt elke individuele vertraging, niet de totale verstreken tijd voor alle pogingen.
Configureer herhaalpogingen voor opdrachten
Maak een aparte aanbieder aan en wijs die toe aan SqlCommand.RetryLogicProvider. Stel SqlRetryLogicOption.AuthorizedSqlCondition in op een predicaat dat alleen true retourneert voor opdrachten die uw toepassing veilig opnieuw kan uitvoeren.
Caution
Een ingebouwde provider probeert een commando niet opnieuw wanneer de verbinding een actieve transactie heeft. Als een tijdelijke storing een transactie ongeldig maakt, rol dan terug en probeer de hele transactie opnieuw. Probeer niet alleen de mislukte verklaring opnieuw.
Het instellen van SqlRetryLogicOption.TransientErrors vervangt de ingebouwde foutenlijst van het stuurprogramma. Om de basislijn uit te breiden zonder de standaardwaarden te verliezen, zie De ingebouwde lijst met tijdelijke fouten uitbreiden.