Поделиться через


CREATE MASTER KEY (Transact-SQL)

Создает главный ключ базы данных.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password'

Аргументы

  • PASSWORD = 'password'
    Указывает пароль, применяемый для шифрования главного ключа базы данных. password должен соответствовать требованиям политики паролей Windows применительно к компьютеру, на котором работает экземпляр SQL Server.

Замечания

Главный ключ базы данных — это симметричный ключ, который применяется для защиты закрытых ключей сертификатов и асимметричный ключей, которые есть в базе данных. При создании этот ключ зашифровывается с помощью алгоритма «Triple DES» и пользовательского пароля. Чтобы обеспечить возможность автоматического расшифровывания главного ключа, его копия шифруется с помощью главного ключа службы и хранится в текущей базе данных и базе данных master. Как правило, копия, которая хранится в базе данных master, обновляется без взаимодействия с пользователем при каждом изменении главного ключа. Это действие, заданное по умолчанию, можно изменить с помощью параметра DROP ENCRYPTION BY SERVICE MASTER KEY инструкции ALTER MASTER KEY. Главный ключ, который не зашифровывается с помощью главного ключа службы, следует открывать с помощью инструкции OPEN MASTER KEY и пароля.

Столбец is_master_key_encrypted_by_server в представлении каталога sys.databases базы данных master показывает, зашифрован ли главный ключ базы данных с помощью главного ключа службы.

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

Важное примечаниеВажно!

Следует создать резервную копию главного ключа с помощью инструкции BACKUP MASTER KEY и хранить ее в безопасном месте вне данного веб-сайта.

Разрешения

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

Примеры

В следующем примере создается главный ключ для базы данных AdventureWorks2008R2. Ключ зашифрован с помощью пароля 23987hxJ#KL95234nl0zBe.

USE AdventureWorks2008R2;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe';
GO