2010-12-13 33 views
3

Je n'ai actuellement pas accès à un cluster de serveur SQL pour le développement (un utilisant des services de cluster avec un SAN derrière) mais le fera à l'avenir pour l'environnement en direct.Programmation de basculement de cluster de serveur SQL

Lors de la programmation à partir d'un environnement .NET, que dois-je faire dans mon code si le nœud auquel je suis connecté meurt? Le basculement vers l'autre noeud est-il complètement transparent? Dois-je attraper une sorte d'exception et essayer de me reconnecter? Existe-t-il un modèle de code pour cela? Le basculement est une grosse déconnexion qui coupera toute connexion au serveur

+0

Par ailleurs, la mise en place d'un cluster de serveurs SQL est très coûteuse par rapport à la mise en miroir de base de données (par exemple). Le basculement pour la mise en miroir de la base de données est-il complètement transparent (aucune exception n'est levée au niveau du code .NET)? –

Répondre

3

Vous pourrez généralement vous reconnecter en quelques secondes à quelques minutes, une fois que le serveur de secours a démarré et récupéré les bases de données à partir du (des) lecteur (s) partagé (s). Toute transaction en vol au moment du basculement sera annulée. Dans votre application, un basculement sera un événement éteint, vous perdrez toutes vos connexions et toute tentative de reconnexion échouera jusqu'à ce que la restauration du serveur de secours soit terminée. Si vous utilisez une sémantique de transaction correcte, les données seront correctes et une application bien écrite reprendra sans problème. Si vous n'utilisez pas les transactions correctement, vous aurez toutes sortes d'incohérences à partir de demi-écritures logiques pas correctement protégées par une limite de transaction.

Vous pouvez toujours tester le basculement sur deux machines virtuelles. Virtual Server et HyperV peuvent tous deux simuler des clusters sur du matériel virtuel (pas sur Virtual PC), et je pense que VMWare le peut également (même si je ne l'ai jamais essayé).

+0

Et le basculement de base de données Mirroring se comporte exactement de la même manière dans l'application: toutes les connexions sont coupées, l'exception est lancée dans .Net, toutes les transactions en attente sont annulées. DBM * peut * récupérer plus rapidement (secondes). –

+0

Donc, pour être clair, la mise en miroir de base de données échoue plus rapidement que le clustering sql? –

+0

Oui, DBM échoue plus rapidement: l'instance de l'hôte miroir est déjà en cours d'exécution. Avec le clustering, la veille doit commencer à froid. –