Восстановление главного ключа базы данных

Область применения:SQL Server

В этой статье описывается, как восстановить мастер-ключ базы данных в SQL Server с помощью Transact-SQL. Главный ключ базы данных шифрует другие ключи и сертификаты внутри базы данных. Если он удалён или повреждён, SQL Server может не смог расшифровать эти ключи, и данные, зашифрованные с ними, фактически теряются. Восстановить мастер-ключ базы данных из резервной копии, чтобы восстановить доступ к этим ключам.

Limitations

Когда вы восстанавливаете мастер-ключ базы данных, SQL Server расшифровывает все ключи, зашифрованные текущим мастер-ключом базы данных, а затем шифрует их восстановленным мастер-ключом базы данных. Запланируйте эту ресурсоёмкую операцию в период низкого спроса. Если текущий мастер-ключ базы данных не открыт или нельзя открыть, или если какой-либо ключ, зашифрованный им, не поддаётся расшифровке, операция восстановления проваливается.

Если какое-либо из расшифровок не удаётся, восстановление проваливается. Можно использовать FORCE опцию игнорирования ошибок, но эта опция приводит к потере любых данных, которые нельзя расшифровать.

Если сервисный мастер-ключ шифрует главный ключ базы данных, он также шифрует восстановленный мастер-ключ базы данных.

Если в текущей базе данных отсутствует мастер-ключ базы данных, RESTORE MASTER KEY создаёт главный ключ базы данных. Сервисный мастер-ключ не шифрует автоматически новый мастер-ключ базы данных.

Разрешения

Необходимо разрешение CONTROL на базу данных.

Восстановить мастер-ключ базы данных

Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.

  1. Сохраните резервную копию главного ключа базы данных с физического носителя данных резервных копий или из папки локальной файловой системы.

  2. Подключитесь к экземпляру SQL Server, содержащему мастер-ключ базы данных, который вы хотите восстановить. Вы можете подключиться к экземпляру SQL Server с помощью любого знакомого клиентского средства SQL Server, например sqlcmd, SQL Server Management Studio (SSMS) или расширения MSSQL для Visual Studio Code.

  3. Пересмотрите и запустите следующий Transact-SQL сценарий.

    В этом примере:

    • Вы восстанавливаете мастер-ключ базы данных для AdventureWorks2025 из C:\Temp\AdventureWorks2025_master_key.

    • Вы устанавливаете новый пароль <new-password>для шифрования. Измените эти настройки, чтобы они соответствовали вашей среде.

    Предостережение

    Новый пароль понадобится для открытия мастер-ключа базы данных в будущем. Убедитесь, что вы храните этот пароль безопасно и надёжно.

    USE AdventureWorks2025;
    GO
    
    RESTORE MASTER KEY
        FROM FILE = 'C:\Backups\Keys\AdventureWorks2025_master_key'
        DECRYPTION BY PASSWORD = '<password>'
        ENCRYPTION BY PASSWORD = '<new-password>';
    GO