In my job, I spend a lot of time meeting with customers and users, talking about Microsoft Virtualization and their virtualization needs.  One of the items that customers raise with me is whether having high availability (HA) VMs means that they don’t have to cluster their applications anymore, with SQL being a good example.  In most cases, the answer is no.  With SQL Clustering, you get clustering and failover at the application level. 

Most HA solutions in the virtualization realm don’t work at the app level.  Live Migration (or VMotion) is great for planned downtime, but what about unplanned downtime?  Failover clustering works at the VM level for unplanned downtime but the VM will restart when an event occurs.  Even fault tolerant VMs are not the solution, as they only account for failures at the host level, not the app.

To get application level failover, what you really need is guest clustering, where you cluster the VMs.  You treat the VMs like the physical servers as before and cluster at that level, rather than at a virtualization level.  The great news is that recently, the Microsoft SQL Server team updated their support policy to include guest clustering.  Now, you can have a supported guest failover clustering solution for Microsoft SQL Server.  An this solution works not only for Hyper-V, but for SVVP validated hypervisors.