Programmation de basculement de cluster de server SQL

Je n'ai actuellement pas access à un cluster de servers 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.

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 model de code pour cela?

Le basculement est une grosse déconnection qui coupera toute connection au server. Vous pourrez généralement vous reconnecter en quelques secondes à quelques minutes, une fois que le server 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 connections et toute tentative de reconnection échouera jusqu'à ce que la restauration du server de secours soit terminée. Si vous utilisez une sémantique de transaction correcte, datatables 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é).