Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : .NET Framework
.NET
Standard
Cet article explique comment créer un fournisseur de nouvelles tentatives exponentielles et l’associer à un SqlConnection. Le fournisseur passe en revue la liste intégrée au pilote des erreurs de connexion temporaires et tente d'ouvrir la connexion jusqu'à cinq fois.
Prerequisites
- Microsoft. Data.SqlClient 3.0 ou une version ultérieure.
- Une chaîne de connexion pour SQL Server, Azure SQL Database, Azure SQL Managed Instance, ou une base de données SQL dans Microsoft Fabric.
Configurez un fournisseur de réessayage de connexion
Définissez les options de réessayage. Laissez
TransientErrorscommenullpour que le fournisseur utilise la liste d’erreurs transitoires intégrée.// 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) };Créez un prestataire parmi les options.
// Create a retry logic provider SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);Assignez le fournisseur avant d’ouvrir la connexion.
// 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 permet une première tentative et jusqu’à quatre tentatives. Le fournisseur exponentiel augmente l’intervalle entre les tentatives et ajoute un jitter aléatoire.
MaxTimeInterval plafonne chaque délai individuel, pas le temps total écoulé pour toutes les tentatives.
Configurer les tentatives de nouvelle exécution de la commande
Créez un fournisseur séparé et assignez-le à SqlCommand.RetryLogicProvider. Réglez SqlRetryLogicOption.AuthorizedSqlCondition sur un prédicat qui ne retourne true que pour les commandes que votre application peut répéter en toute sécurité.
Avertissement
Un fournisseur intégré ne réessaie pas une commande lorsque la connexion a une transaction active. Si une défaillance transitoire invalide une transaction, revenez en arrière et réessayez l’intégralité de la transaction. Ne recommencez pas seulement l’énoncé qui échoue.
Le réglage SqlRetryLogicOption.TransientErrors remplace la liste d’erreurs intégrée du pilote. Pour étendre la ligne de base sans perdre les paramètres par défaut, voir Étendre la liste d’erreurs transitoires intégrée.
Contenu connexe
- Créer un fournisseur de tentatives personnalisé pour SqlClient
- Fournisseurs de logique de tentative intégrés dans SqlClient
- Configurez la logique de réessayage SqlClient avec un fichier de configuration
- Logique de nouvelle tentative configurable dans SqlClient
- Microsoft. Data.SqlClient pour SQL Server