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


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 пытается расшифровать главный ключ базы данных при помощи каждых совпадающих учетных данных до тех пор, пока расшифровка не завершится успешно или не останется учетных данных.

ms182754.Caution(ru-ru,SQL.90).gifВнимание!
Не создавайте учетные данные главного ключа для базы данных, которая должна быть недоступна 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 будет завершено неудачно.

ms182754.note(ru-ru,SQL.90).gifПримечание.
Две базы данных из различных экземпляров сервера могут иметь один и тот же идентификатор GUID семейства. Если такое происходит, базы данных будут иметь одну и ту же запись главного ключа в хранилище учетных данных.

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

Разрешения

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

Примеры

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

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

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

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

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

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

См. также

Справочник

Хранимые процедуры безопасности (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
sys.credentials (Transact-SQL)

Другие ресурсы

Настройка зашифрованной зеркальной базы данных
Учетные данные

Справка и поддержка

Получение помощи по SQL Server 2005