I have been doing research into various high availability options for SQL Server 2005. With regard to high availability, what circumstances would favor clustering over mirroring as an option?
From what I can tell, mirroring has numerous advantages including not having the single point of failure storage equipment, no expensive clustering hardware to buy, and faster automatic failover assuming you have a witness server.
The only situation I can think of that favors clustering is a situation where you have more than two servers.
Can anyone provide further insights?
If you have several databases, I recommend clustering. Mirroring is configured and managed per database, whereas clustering is configured and managed per instance. That's a very big (and potentially time-consuming) difference.
If you have other services, files in the filesystem, other resources outside of SQL that have to be present after a failover, then consider clustering. If you have several databases that have to be together, then consider clustering.
With mirroring it's just the DB that fails over, nothing more. With clustering the entire set of shared drives are available to the secondary server after a failover.
That said, one thing with clustering. There's only a single set of storage (usually). That's a single point of failure and is often the weak point.
Cluster is a good solution only for the SQL service (and other resources) EXCEPT Data, while mirroring duplicates your data, so if you have storage failure, the cluster is not enough.