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

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

В этом разделе описывается восстановление главного ключа базы данных в SQL Server с помощью Transact-SQL.

Подготовка к работе

ограничения

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

  • Если во время расшифровки любого объекта произойдет ошибка, восстановление будет прервано. Чтобы пропускать ошибки, можно использовать параметр FORCE, но это приведет к потере всех данных, которые не удается расшифровать.

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

  • Если в текущей базе данных нет главного ключа, RESTORE MASTER KEY создает главный ключ. Новый главный ключ не будет автоматически шифроваться с использованием главного ключа службы.

Безопасность

Разрешения

Требует разрешения CONTROL для базы данных.

В среде SQL Server Management Studio с помощью Transact-SQL

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

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

  2. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  3. На стандартной панели выберите пункт Создать запрос.

  4. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    -- Restores the database master key of the AdventureWorks2022 database.  
    USE AdventureWorks2022;  
    GO  
    RESTORE MASTER KEY   
        FROM FILE = 'c:\backups\keys\AdventureWorks2022_master_key'   
        DECRYPTION BY PASSWORD = '3dH85Hhk003#GHkf02597gheij04'   
        ENCRYPTION BY PASSWORD = '259087M#MyjkFkjhywiyedfgGDFD';  
    GO  
    

    Примечание.

    Путь к файлу ключа и пароль ключа (если он существует) будет отличаться от вышеуказанного. Убедитесь, что оба этих параметра соответствуют настройке конкретного сервера и ключа.

См. также