暗号化されたデータベースとログ配布、ミラーリング、クラスタリング

マイクロソフトの平山です。

前回、前々回と続けてきた SQL Server 2008 からの新機能「透過的なデータ暗号化」を、他の機能の組み合わせて使うときの注意点を紹介するというテーマの最終回です。
今回は「ログ配布」、「データベースミラーリング」、「フェールオーバークラスタリング」を取り上げてみます。

それぞれ機能の基本的な動作を考えてみると、注意点や必要な事前準備を推測することができると思います。

まず 「ログ配布」 について考えてみます。
通常の場合は初期同期のための作業として、プライマリデータベースをセカンダリサーバーに復元します。
その際に、プライマリデータベースが暗号化されていると、セカンダリサーバーへの復元が失敗してしまいます。

次に 「データベースミラーリング」 の場合です。
ミラーリングの設定の事前準備として、プリンシパルサーバーのデータベースをミラーサーバーに復元しておく必要があります。
その際に、プリンシパルサーバーのデータベースが暗号化されていると(ログ配布の場合と同様に)、ミラーサーバへの復元時にエラーが発生してしまいます。

さて、この問題を回避するには、どうすればよいでしょうか?
その答えは前々回のエントリで紹介してあります。それぞれの場合の事前準備として、「ログ配布」の場合はセカンダリサーバーで、「データベースミラーリング」の場合はミラーサーバーで、サービスマスターキーの作成と証明書の復元を行っておく必要があります。
それ以外は、通常の設定方法と同じです。

最後に 「フェールオーバークラスタリング」 について紹介します。
フェールオーバークラスタリングが構成されている SQL Server インスタンスに暗号化されているデータベースが存在したとしても、特に事前準備はありません。
クラスタリング環境では、複数のノードのうちのいづれかひとつのノードで SQL Server インスタンスが稼働することができます。しかし、実体としてのデータベース (ユーザデータベースおよびシステムデータベース) は複数のノード分存在するのではなく、全ノードで共有しています。
そのため、サービスマスターキーや証明書も、どのノードで SQL Server インスタンスが起動しても同じものを使用していることになります。
ということで、事前に特別な考慮をすることなくクラスタ環境で暗号化されたデータベースを使用することができます。