適用対象:SQL Server
この記事では、Transact-SQLを使ってSQL Serverでデータベースマスターキーを復元する方法を説明します。 データベースマスターキーは、データベース内の他の鍵や証明書を暗号化します。 もし鍵が削除されたり破損した場合、SQL Serverはそれらの鍵を復号できなくなり、それらで暗号化されたデータは事実上失われてしまうことがあります。 バックアップからデータベースのマスターキーを復元して、そのキーへのアクセスを回復してください。
Limitations
データベースマスターキーを復元すると、SQL Serverは現在アクティブなデータベースマスターキーで暗号化されたすべてのキーを復号し、復元されたデータベースマスターキーで暗号化します。 この資源集約型の運用は需要が低い時期にスケジュールしてください。 現在のデータベースマスターキーが開かれていなかったり、開けられなかったり、暗号化された鍵のどれかが復号できない場合、復元操作は失敗します。
復号のいずれかが失敗すれば、復元は失敗します。
FORCEオプションを使ってエラーを無視することもできますが、このオプションでは復号できないデータが失われてしまいます。
サービスマスターキーがデータベースマスターキーを暗号化する場合、復元されたデータベースマスターキーも暗号化されます。
現在のデータベースにマスターキーがなければ、 RESTORE MASTER KEY データベースマスターキーを作成します。 サービスマスターキーは新しいデータベースのマスターキーを自動的に暗号化するわけではありません。
アクセス許可
データベースに対する CONTROL 権限が必要です。
データベースマスターキーを復元する
この記事のコードサンプルは、Azure Data SQL Samples Repository GitHub repositoryからダウンロードできるAdventureWorks2025またはAdventureWorksDW2025サンプルデータベースを使用しています。
バックアップしたデータベース マスター キーのコピーを、物理バックアップ メディアまたはローカル ファイル システム上のディレクトリから取得します。
復元したいデータベースマスターキーを含むSQL Serverインスタンスに接続します。 SQLcmd、SQL Server Management Studio (SSMS)、Visual Studio Code 用の MSSQL 拡張機能など、使い慣れた SQL Server クライアント ツールを使用して、SQL Server のインスタンスに接続できます。
以下の Transact-SQL スクリプトを確認して実行してください。
この例は次のとおりです。
AdventureWorks2025からデータベースマスターキーをC:\Temp\AdventureWorks2025_master_keyに復元します。新しい暗号化パスワードを設定し
<new-password>。 これらの設定を環境に合わせて変更してください。
Caution
将来的にデータベースマスターキーを開くには新しいパスワードが必要です。 このパスワードは安全かつ確実に保存してください。
USE AdventureWorks2025; GO RESTORE MASTER KEY FROM FILE = 'C:\Backups\Keys\AdventureWorks2025_master_key' DECRYPTION BY PASSWORD = '<password>' ENCRYPTION BY PASSWORD = '<new-password>'; GO