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

適用対象: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サンプルデータベースを使用しています。

  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