TDE 対応データベースがSQL Serverで回復しない可能性がある

この記事は、サービス マスター キー (SMK) によるマスター キーの自動暗号化が削除されたときに TDE 対応データベースが回復しない可能性がある問題を解決するのに役立ちます。

適用対象: SQL Server 2008 Enterprise、SQL Server 2008 R2 Enterprise
元の KB 番号: 2666213

現象

Microsoft SQL Server 2008 および Microsoft SQL Server 2008 R2 では、透過的なデータベース暗号化 (TDE) が有効になっているデータベースが回復しない可能性があります。 また、次のエラー メッセージがSQL Serverエラー ログに記録される場合があります。

2012-01-14 22:16:26.47 spid20s エラー: 15581, 重大度: 16, 状態: 3.
2012-01-14 22:16:26.47 spid20s この操作を実行する前に、データベースにマスター キーを作成するか、セッションでマスター キーを開いてください。

原因

この問題は、次のコマンドを実行すると、マスター データベース内のデータベース マスター キーのサービス マスター キー暗号化が削除されるときに発生します。

USE MASTER
GO
ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY

データベース マスター キー (DMK) が最初に作成されると、SMK で自動的に暗号化されます。

データベース マスター キーは、Transparent Database Encryption 機能によって使用される証明書の暗号化に使用されます。 TDE 対応データベースを使用しようとすると、マスター データベース内の証明書とデータベース マスター キーにアクセスする必要があります。 既定の構成では、DMK は SMK によって暗黙的に開かれます。 サービス マスター キーによって暗号化されていないマスター キーは、マスター キーへのアクセスを必要とする各セッションのパスワードと共に ステートメントを OPEN MASTER KEY 使用して明示的に開く必要があります。

データベースの復旧は、システム セッションで行われます。 これらのセッションで証明書と DMK を開くことができない場合、SMK による DMK の自動復号化が削除された場合、TDE 対応データベースで復旧を完了できません。 このシナリオでは、データベースは [回復保留中] としてマークされます。

解決方法

この問題を解決するには、マスター キーの自動復号化を有効にします。 これを行うには、次のコマンドを実行します。

USE MASTER
GO
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY

コマンドを使用して、データベースを ALTER DATABASE <databasename> SET ONLINE オフラインにしてオンラインにします。

次のクエリを使用して、マスター データベースに対してサービス マスター キーによるマスター キーの自動復号化が無効にされたかどうかを判断します。

SELECT is_master_key_encrypted_by_server FROM sys.databases WHERE NAME = 'master'

このクエリで値 0 が返された場合、サービス マスター キーによるマスター キーの自動暗号化解除が無効になりました。