TDE が有効なデータベースは、データベース内で回復SQL Server

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

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

現象

2008 Microsoft SQL Server 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) が最初に作成されると、サービス マスター キーによって自動的に暗号化されます。

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

データベースの回復はシステム セッションで行われます。 これらのセッションで証明書とデータベース マスター キーを開くことができない場合、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 command

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

select is_master_key_encrypted_by_server from sys.databases where name = 'master'

このクエリが値 0 を返す場合、サービス マスター キーによるマスター キーの自動復号化が無効になりました。