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


sp_control_dbmasterkey_password (Transact-SQL)

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

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

Синтаксис

sp_control_dbmasterkey_password @db_name = 'database_name' 
        , @password = 'master_key_password' 
        , @action = { 'add' | 'drop' }

Аргументы

  • @db_name = N'database_name'
    Указывает имя базы данных, ассоциированной с этими учетными данными. База данных не может быть системной. Аргумент database_name имеет тип nvarchar.

  • @password = N'password'
    Указывает пароль для главного ключа. Аргумент password имеет тип nvarchar.

  • @action = N'add'
    Указывает на то, что учетные данные для указанной базы данных будет добавлены в хранилище учетных данных. Учетные данные будут содержать пароль главного ключа базы данных. Значение, переданное в аргумент @action, имеет тип nvarchar.

  • @action =N'drop'
    Указывает на то, что учетные данные для указанной базы данных будет удалены из хранилища учетных данных. Значение, переданное в аргумент @action, имеет тип nvarchar.

Замечания

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

ПредупреждениеВнимание!

Не создавайте учетные данные главного ключа для базы данных, которая должна быть недоступна sa и другим привилегированным участникам [системы безопасности] на уровне сервера. База данных может быть настроена таким образом, чтобы иерархия ее ключей не могла быть расшифрована главным ключом службы. Этот параметр поддерживается для максимальной защиты баз данных, содержащих зашифрованные сведения, которые не должны быть доступны sa или другим привилегированным участникам [системы безопасности] на уровне сервера. Создание учетных данных главного ключа для такой базы данных сводит на нет эту защиту, позволяя sa и другим привилегированным участникам [системы безопасности] на уровне сервера расшифровывать базу данных.

Учетные данные, созданные с помощью процедуры sp_control_dbmasterkey_password, видны в представлении каталога sys.master_key_passwords. Имена учетных данных, созданных для главных ключей базы данных, имеют такой формат: ##DBMKEY_<database_family_guid>_<random_password_guid>##. Пароль хранится как секретные учетные данные. Для каждого пароля, добавленного в хранилище учетных данных, существует строка в представлении sys.credentials.

Процедуру sp_control_dbmasterkey_password нельзя использовать для создания учетных данных для следующих системных баз данных: master, model, msdb или tempdb.

Процедура sp_control_dbmasterkey_password не проверяет возможность пароля открывать главный ключ указанной базы данных.

Если задан пароль, который уже хранится в учетных данных для указанной базы данных, выполнение процедуры sp_control_dbmasterkey_password будет завершено неудачно.

ПримечаниеПримечание

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

Параметры, переданные в процедуру sp_control_dbmasterkey_password, не появляются в трассировках.

ПримечаниеПримечание

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

Разрешения

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

Примеры

A. Создание учетных данных для главного ключа AdventureWorks2008R2

В следующем примере создаются учетные данные для главного ключа базы данных AdventureWorks2008R2, пароль главного ключа сохраняется в виде секретного кода в учетных данных. Так как все параметры, передаваемые в процедуру sp_control_dbmasterkey_password, должны иметь тип данных nvarchar, текстовые строки преобразуются оператором приведения N.

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2008R2', 
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';
GO

Б. Удаление учетных данных для главного ключа базы данных

В следующем примере удаляются учетные данные, созданные в примере A. Обратите внимание, что все параметры являются обязательными, включая пароль.

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2008R2', 
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';
GO