2011-11-14 1 views
2

Lors de ma migration vers Azure, j'ai implémenté l'équipe de conseil client de Windows Azure AppFabric "TransientFaultHandling framework". http://appfabriccat.com/2011/02/transient-fault-handling-framework/SQL Azure réessaie-t-il la structure logique TransientFaultHandling est-il livré avec des stratégies de réessai par défaut?

Voici ce que je tout simplement pas à mon code (si facile il semble trop beau pour être vrai):

1/Référence à Microsoft.AzureCAT.Samples.TransientFaultHandling.dll dans mon projet (avec espace de noms importé automatique)

2/Définir une fonction publique sur une bibliothèque de DLL commune qui renvoie une politique commune:

Public Shared Function retryPolicy() As RetryPolicy 

    Dim oPolicy As RetryPolicy = New RetryPolicy(Of SqlAzureTransientErrorDetectionStrategy)(10, TimeSpan.FromMilliseconds(100)) 
    Return oPolicy 

End Function 

3/Remplacée tous oConn.Open() avec oConn.OpenWithRetry(retryPolicy()) et remplacé tous les autres Reader, Scalar, NonQuery avec:

  • oCmd.ExecuteReaderWithRetry(retryPolicy())
  • oCmd.ExecuteNonQueryWithRetry(retryPolicy())
  • oCmd.ExecuteScalarWithRetry(retryPolicy())

4/C'est tout

Il fonctionne, je veux dire qu'il n'y a erreurs, mais comme je suis en train de tester sur mon serveur SQL local, je ne sais pas si la logique de réessai est correc tly implémenté car je ne suis pas au courant d'un moyen de tester un échec de connexion.

J'ai lu quelques exemples d'implémentation de cette structure TransientFaultHandling, et certains incluaient une classe personnalisée pour détecter le code d'erreur du serveur SQL. Je n'ai pas créé une telle classe pour garder les choses simples, car je suppose que le framework est livré avec un bon comportement par défaut concernant la nouvelle tentative basée sur le code d'exceptions SQL Azure.

Aux questions: - Mon code est-il correct en cas d'échec de connexion SQL Azure classique? Ou dois-je configurer une classe personnalisée pour détecter l'exception de codes par moi-même?

Répondre

3

Le cadre de gestion des erreurs transitoires est livré avec quelques stratégies de réessayer, y compris celle de SQL Azure que vous avez mentionnée. Vous ne devriez pas avoir besoin de faire des changements pour faire ce que vous voulez qu'il fasse. Les exemples que vous voyez sont là pour référence afin que vous puissiez développer le framework si vous voulez l'appliquer à quelque chose qui n'a pas encore été pris en compte.

+0

Parfait! Merci ! – kdstack

Questions connexes