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


sp_control_dbmasterkey_password (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

@db_name= N'db_name'

Указывает имя базы данных, ассоциированной с этими учетными данными. Не может быть системной базой данных. @db_name — nvarchar.

@password= N'password'

Задает пароль динамического интеллектуального анализа данных. @password — nvarchar.

@action = { N'add' | N'drop' }

Указывает действие для учетных данных для указанной базы данных в хранилище учетных данных. Значение, переданное в @action , — nvarchar.

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

Замечания

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

Внимание

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

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

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

sp_control_dbmasterkey_password Не проверяет, что пароль может открыть dmK указанной базы данных.

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

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

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

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

Потенциальная проблема с обратной совместимостью

В настоящее время хранимая процедура не проверяет, существует ли ключ. Эта функция разрешена для обратной совместимости, но отображает предупреждение. Такое поведение является устаревшим. В будущем выпуске ключ должен существовать, а пароль, используемый в хранимой процедуре sp_control_dbmasterkey_password , должен совпадать с одним из паролей, используемых для шифрования dmK.

Разрешения

Требуется членство в предопределенных ролях сервера sysadmin или разрешение на выполнение непосредственно в этой хранимой процедуре.

Примеры

Примеры кода Transact-SQL в этой статье используют AdventureWorks2022 базу данных или AdventureWorksDW2022 пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества Microsoft SQL Server.

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

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

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

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

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

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