SQL Server 2005にはデータベースの高可用性を実現するために、フェールオーバー・クラスタリングとデータベース・ミラーリングという2つの仕組みを使うことができる。
フェールオーバー・クラスタリングはSQL Server 2000でも利用できたが、SQL Server 2005ではさらに拡張され、8ノードまでのクラスタ構成が可能になったこと、Analysis Services 、 Reporting Services 、Integration Services などの他コンポーネントのクラスタ化もサポートされたこと、そして何よりもStandard Editionでクラスタ化がサポートされたことなどの特徴がある。フェールオーバー・クラスタリングでは複数のサーバーをまとめてひとつのクラスタを構成し、それらのサーバーが一つの物理ディスクを共有して仮想的なデータベース・サーバを構成して運用する形になる。サーバーに障害が発生したとき、動的にディスクを他のサーバに切り替え、サービスを継続して運用することができる。フェールオーバー・クラスタリング構成は、必要な可用性のレベルが極めて高いシステムに運用されることになるだろう。
これに対してデータベース・ミラーリングは単純である。通常はプリンシパル・サーバと呼ぶデータベースで運用されるが、別のサーバにミラー・サーバを構成しておき、常に2つのサーバが同期するように構成される。ミラー・サーバは通常運用時にはスタンバイ状態であって、プリンシパル・サーバに障害がおきたときにミラー・サーバが役割を交替して運用を継続する仕組みだ。
データベース・ミラーリングの構成は、プリンシパル・サーバとミラー・サーバの2台で行うものと、プリンシパル・サーバとミラー・サーバにミラーリング監視サーバを加えた3台で行うものがある。またミラーリングの動作モードとして「高パフォーマンス・モード」と「高い安全性モード」とがある。「高い安全性モード」では、ユーザーから発行されたトランザクションはプリンシパル・サーバで実行されるとともにミラー・サーバでも実行される。そしてミラー・サーバでの実行が確認された時点でトランザクション完了となるので、ミラー・サーバの状態は常にプリンシパル・サーバの状態と同じであることが保証される。この「高い安全性モード」は「高可用性モード」と書かれることもあり、ミラーリング監視サーバを含めた3台構成で行う必要があり、自動フェールオーバーができる。
「高パフォーマンスモード」ではトランザクションの実行の同期よりもパフォーマンスが優先されるので、プリンシパル・サーバに障害がおきたとき、ミラー・サーバに送られなかったトランザクションは失われる場合がある。この「高パフォーマンスモード」はサーバ2台構成で実現できるが、プリンシパル・サーバの障害が自動的に判定できないので、プリンシパル・サーバに障害がおきたときは、強制的にミラー・サーバをプリンシパル・サーバに昇格させる「サービスの強制」が必要である。「サービスの強制」は「強制サービスフェールオーバー」とも呼ばれる。
MicrosoftのSQL Server 2005についての文書を読むと、至るところに「高パフォーマンスモードではデータが失われる可能性があります」という文言が見られるが、これはプリンシパル・サーバに障害がおきたときに、その時点でプリンシパル・サーバで実行されたがミラー・サーバに送られていないトランザクションは失われる、ということである。したがって、例えば本校で運用するような業務サーバは、一瞬でも止まってはならない、といったようなクリティカルな運用ではなく、サーバ障害時に失われたデータを再入力することも可能である場合は、「高パフォーマンスモード」でも十分であると考える。