データベースのマスター キーを復元する

適用対象:SQL Server

この記事では、Transact-SQLを使ってSQL Serverでデータベースマスターキーを復元する方法を説明します。 データベースマスターキーは、データベース内の他の鍵や証明書を暗号化します。 もし鍵が削除されたり破損した場合、SQL Serverはそれらの鍵を復号できなくなり、それらで暗号化されたデータは事実上失われてしまうことがあります。 バックアップからデータベースのマスターキーを復元して、そのキーへのアクセスを回復してください。

Limitations

データベースマスターキーを復元すると、SQL Serverは現在アクティブなデータベースマスターキーで暗号化されたすべてのキーを復号し、復元されたデータベースマスターキーで暗号化します。 この資源集約型の運用は需要が低い時期にスケジュールしてください。 現在のデータベースマスターキーが開かれていなかったり、開けられなかったり、暗号化された鍵のどれかが復号できない場合、復元操作は失敗します。

復号のいずれかが失敗すれば、復元は失敗します。 FORCEオプションを使ってエラーを無視することもできますが、このオプションでは復号できないデータが失われてしまいます。

サービスマスターキーがデータベースマスターキーを暗号化する場合、復元されたデータベースマスターキーも暗号化されます。

現在のデータベースにマスターキーがなければ、 RESTORE MASTER KEY データベースマスターキーを作成します。 サービスマスターキーは新しいデータベースのマスターキーを自動的に暗号化するわけではありません。

アクセス許可

データベースに対する CONTROL 権限が必要です。

データベースマスターキーを復元する

この記事のコード サンプルでは、AdventureWorks2025 または AdventureWorksDW2025 サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクト ホーム ページからダウンロードできます。

  1. バックアップしたデータベース マスター キーのコピーを、物理バックアップ メディアまたはローカル ファイル システム上のディレクトリから取得します。

  2. 復元したいデータベースマスターキーを含むSQL Serverインスタンスに接続します。 SQLcmd、SQL Server Management Studio (SSMS)Visual Studio Code 用の MSSQL 拡張機能など、使い慣れた SQL Server クライアント ツールを使用して、SQL Server のインスタンスに接続できます。

  3. 以下の 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