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 для базы данных.
Примеры
А.Создание учетных данных для главного ключа AdventureWorks2012
В следующем примере создаются учетные данные для главного ключа базы данных AdventureWorks2012, пароль главного ключа сохраняется в виде секретного кода в учетных данных. Так как все параметры, передаваемые в процедуру sp_control_dbmasterkey_password, должны иметь тип данных nvarchar, текстовые строки преобразуются оператором приведения N.
EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2012',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';
GO
Б.Удаление учетных данных для главного ключа базы данных
Следующий пример удаляет учетные данные, созданные в примере А. Обратите внимание, что все параметры, включая пароль, являются обязательными.
EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2012',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';
GO
См. также
Справочник
Хранимые процедуры безопасности (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
sys.credentials (Transact-SQL)