次の方法で共有


MSSQLSERVER_15581

適用対象: SQL サーバー

詳細

属性 Value
製品名 SQL Server
イベント ID 15581
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 SEC_NODBMASTERKEYERR
メッセージ テキスト この操作を実行するには、マスター キーをデータベースに作成するか、またはセッション内のマスター キーを開いてください。

説明

SQL Server で透過的なデータ暗号化 (TDE) が有効になっているデータベースを復旧できない場合、エラー 15581 が発生します。 次のようなエラー メッセージが SQL Server エラー ログに記録されます

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

考えられる原因

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

Use master
go
alter master key drop encryption by service master key

サービス マスター キーは、データベース マスター キーで使われる証明書を暗号化するために使用されます。 TDE が有効なデータベースを使用してみる場合は、master データベース内のデータベース マスター キーへのアクセスが必要になります。 OPEN MASTER KEY (Transact-SQL) ステートメントを、マスター キーへのアクセスを必要とする各セッションのパスワードと共に使用して、サービス マスター キーによって暗号化されていないマスター キーを開く必要があります。 このコマンドはシステム セッションでは実行できないため、TDE が有効なデータベースでは復旧を完了できません。

ユーザー アクション

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

Use master
go
open master key DECRYPTION BY PASSWORD = 'password'
alter master key add encryption by service master key

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

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

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

詳細

場合によっては、SQL Server のインスタンスが応答していないように見えることがあります。 動的管理ビューに対して sys.dm_exec_requests クエリを実行すると、DML 操作を行っている LogWriter スレッドおよびその他のスレッドが WRITELOG wait_type で無期限に待機していることがわかります。 他のセッションも、ロックを取得しようとしている間に待機している可能性があります。