2009-07-02 7 views
3

Si je suis en train de développer pour un environnement qui utilisera le clustering SQL Server, que devrais-je savoir (le cas échéant)?Développement pour le cluster SQL Server

D'après ce que je l'ai vu, je gérer une exception sur une opération de base de données et ont deux options:

  • un lien « nouvelle tentative » à l'utilisateur. Au moment où l'utilisateur réessaie, le nœud de basculement doit être entré.
  • Patientez quelques secondes, puis réessayez, sans en avertir l'utilisateur.

Est-ce correct? Est-ce tout ce que j'ai besoin de faire?

C'est une application ASP.NET, mais je ne pense pas que cela devrait faire une énorme différence dans l'approche.

Tout conseil serait apprécié

Duncan

Répondre

3

Juste une nouvelle tentative de la connexion devrait être suffisant. Lorsqu'une instance est au milieu d'un basculement et notre application a une connexion ouverte, voici ce qui se passe:

  1. La connexion fonctionne
  2. SQLException: « Une erreur au niveau du transport a eu lieu lors de l'envoi de la demande le serveur (fournisseur: fournisseur TCP, erreur: 0 - une connexion existante a été fermée de force par l'hôte distant.). «
  3. SQLException: » une erreur liée au réseau ou spécifique à l'instance est survenue lors de l'établissement d'une connexion à SQL server. Le serveur n'a pas été trouvé ou n'était pas accessible Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes (fournisseur: Fournisseur TCP, erreur: 0 - Aucune connexion n pourrait être parce que la machine cible activement refusé.) »
  4. Le message à l'étape 3 sera répétée jusqu'à ce que le basculement est terminé.
  5. Reconnexion réussie.

Dans ce cas, vous devez uniquement essayer de réessayer la connexion. Si votre serveur SQL est généralement très réactif, vous pouvez essayer d'envelopper votre code de connexion dans une classe où un appel de base de données expire après 30 secondes, mais à l'intérieur de la classe, utilisez un délai plus court et réessayez plusieurs fois. Cela ne donnera à votre application qu'un seul appel à effectuer, et permettra aux connexions internes de basculer en cas de besoin. La transition du nom de réseau et de l'adresse IP est transparente, il n'y a donc rien de spécial à faire pour récupérer en cas de basculement - il suffit de vous reconnecter et de continuer à bouger. Gardez à l'esprit, cependant, que toutes les transactions seront roulées en processus de retour, donc si vous aviez tout ce qui était en cours d'exécution lorsque la déconnexion a eu lieu, vous devrez soumettre à nouveau sur le nouveau nœud.

Questions connexes