CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure базе данных SQL Azure Synapse Analytics Analytics Platform System (PDW) в Microsoft Fabric
Создает учетные данные для базы данных. Учетные данные базы данных не сопоставляются с именем входа сервера или пользователем базы данных. База данных использует эти учетные данные для доступа к внешнему расположению каждый раз при выполнении операции, требующей доступа.
Соглашения о синтаксисе Transact-SQL
Синтаксис
CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
[ , SECRET = 'secret' ]
[ ; ]
Аргументы
credential_name
Указывает имя создаваемых учетных данных для базы данных. credential_name не удается начать с знака номера (#
). Системные учетные данные начинаются с ##
. Максимальная длина credential_name составляет 128 символов.
IDENTITY = "identity_name"
Указывает имя учетной записи для использования при подключении за пределами сервера.
- Чтобы импортировать файл из Хранилище BLOB-объектов Azure или Azure Data Lake Storage с помощью общего ключа, необходимо указать
SHARED ACCESS SIGNATURE
имя удостоверения. Дополнительные сведения о подписанных URL-адресах см. в статье Использование подписанных URL-адресов. ИспользуетсяIDENTITY = SHARED ACCESS SIGNATURE
только для подписанного URL-адреса. - Чтобы импортировать файл из Хранилище BLOB-объектов Azure с помощью управляемого удостоверения, необходимо указать
MANAGED IDENTITY
имя удостоверения. - При использовании Kerberos (Windows Active Directory или MIT KDC) не указывайте доменное имя в аргументе IDENTITY. В этом аргументе должно быть только имя учетной записи.
- В экземпляре SQL Server при создании учетных данных с областью действия базы данных с ключом доступа к хранилищу, используемым в качестве СЕКРЕТа, удостоверение игнорируется.
- Инструкция WITH IDENTITY не требуется, если для контейнера в хранилище BLOB-объектов Azure включен анонимный доступ. См. пример запроса к хранилищу BLOB-объектов Azure в разделе Импорт данных в таблицу из файла, который находится в хранилище BLOB-объектов Azure.
Внимание
Единственный внешний источник данных PolyBase, поддерживающий проверку подлинности Kerberos, — Hadoop. Все другие внешние источники данных (SQL Server, Oracle, Teradata, MongoDB, универсальный ODBC) поддерживают только обычную проверку подлинности.
- Для загрузки данных в Azure Synapse Analytics можно использовать любое допустимое значение для IDENTITY.
- В бессерверном пуле SQL Azure Synapse Analytics учетные данные базы данных могут указывать управляемое удостоверение рабочей области, имя субъекта-службы или маркер подписанного URL-адреса (SAS). Доступ с помощью удостоверения пользователя, включенного сквозной проверкой подлинности Microsoft Entra, также возможен с учетными данными базы данных, так как анонимный доступ к общедоступному хранилищу. Дополнительные сведения см. в разделе "Поддерживаемые типы авторизации хранилища".
- В выделенном пуле SQL в Azure Synapse Analytics учетные данные базы данных могут указывать маркер подписанного URL-адреса (SAS), пользовательский идентификатор приложения, управляемое удостоверение рабочей области или ключ доступа к хранилищу.
SECRET = "secret"
Указывает секретный код, необходимый для исходящей проверки подлинности. SECRET
требуется для импорта файла из хранилища больших двоичных объектов Azure. Для загрузки из хранилища BLOB-объектов Azure в Azure Synapse Analytics или Parallel Data Warehouse в качестве секретного ключа необходимо использовать ключ хранилища Azure.
Предупреждение
Значение ключа SAS может начинаться с '?' (вопросительный знак). При использовании ключа SAS необходимо удалить начальный символ '?'. В противном случае действия могут быть заблокированы.
Замечания
Учетные данные базы данных — это запись, содержащая сведения о проверке подлинности, необходимые для подключения к ресурсу за пределами SQL Server. Большинство учетных данных включают имя пользователя и пароль Windows.
Для защиты конфиденциальной информации в учетных данных в области базы данных требуется главный ключ базы данных (DMK). DMK — это симметричный ключ, который шифрует секрет в учетных данных в области базы данных. Перед созданием учетных данных с областью действия базы данных база данных должна иметь dmK. DmK должен быть зашифрован с помощью надежного пароля. База данных SQL Azure создаст динамический административный код со строгим, случайным образом выбранным паролем в рамках создания учетных данных базы данных или в рамках создания аудита сервера. Пользователи не могут создать dmK в логической master
базе данных. Пароль главного ключа неизвестен корпорации Майкрософт и недоступен после создания. По этой причине рекомендуется создать dmK перед созданием учетных данных в области базы данных. Дополнительные сведения см. в разделе CREATE MASTER KEY (Transact-SQL).
Если IDENTITY является пользователем Windows, секретный код может быть паролем. Секрет шифруется с помощью главного ключа службы (SMK). При повторном создании SMK секрет повторно шифруется с помощью нового SMK.
При предоставлении разрешений для подписанных URL-адресов (SAS) для использования с внешней таблицей PolyBase выберите Контейнер и Объект в качестве допустимых типов ресурсов. Если этого не сделать, при попытке доступа к внешней таблице может возникнуть ошибка 16535 или 16561.
Дополнительные сведения об учетных данных для базы данных см. в представлении каталога sys.database_scoped_credentials.
Далее приводятся некоторые варианты использования учетных данных для базы данных.
SQL Server использует учетные данные с областью базы данных для доступа к недоступным Хранилище BLOB-объектов Azure или кластерам Hadoop, защищенным Kerberos, с помощью PolyBase. Дополнительные сведения см. в разделе CREATE EXTERNAL DATA SOURCE (Transact-SQL).
Azure Synapse Analytics использует учетные данные с областью базы данных для доступа к недоступным Хранилище BLOB-объектов Azure с PolyBase. Дополнительные сведения см. в разделе CREATE EXTERNAL DATA SOURCE (Transact-SQL). Дополнительные сведения о проверке подлинности хранилища Azure Synapse см. в статье Использование внешних таблиц в Synapse SQL.
База данных SQL использует учетные данные с областью базы данных для функции эластичного запроса. Это возможность выполнять запросы к нескольким сегментам базы данных.
База данных SQL используют учетные данные базы данных для записи расширенных файлов событий в Хранилище BLOB-объектов Azure.
База данных SQL использует учетные данные с областью базы данных для эластичных пулов. Дополнительные сведения см. в статье о решении проблем с бурным ростом эластичных баз данных.
BULK INSERT и OPENROWSET используют учетные данные с областью базы данных для доступа к данным из Хранилище BLOB-объектов Azure. Дополнительные сведения см. в разделе Примеры массового доступа к данным в хранилище BLOB-объектов Azure.
Используйте учетные данные с областью базы данных с помощью PolyBase и Управляемый экземпляр SQL Azure функций виртуализации данных.
Для РЕЗЕРВНОГО КОПИРОВАНИЯ URL-адреса TO и RESTORE FROM URL-адреса используйте учетные данные на уровне сервера с помощью CREATE CREDENTIAL (Transact-SQL).
Разрешения
Требуется разрешение CONTROL для базы данных.
SQL Server 2022
Начиная с SQL Server 2022 (16.x) появился новый тип соединителя, используя вызовы REST API, заменяющие HADOOP. Для Хранилище BLOB-объектов Azure и Azure Data Lake 2-го поколения используется SHARED ACCESS SIGNATURE
единственный поддерживаемый метод проверки подлинности.
Дополнительные сведения см. в разделе CREATE EXTERNAL DATA SOURCE.
Примеры
А. Создание учетных данных для базы данных для вашего приложения
В следующем примере создаются учетные данные с именем AppCred
для базы данных. В эти учетные данные для базы данных входят имя пользователя Windows Mary5
и пароль.
-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';
-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL AppCred WITH IDENTITY = 'Mary5',
SECRET = '<EnterStrongPasswordHere>';
B. Создание учетных данных для базы данных для подписанного URL-адреса
В следующем примере создаются учетные данные для базы данных, которые можно использовать для создания внешнего источника данных, выполняющего массовые операции, такие как BULK INSERT и OPENROWSET.
-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';
-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';
В. Создание учетных данных для базы данных для подключения PolyBase к Azure Data Lake Store
В следующем примере создается учетные данные с областью действия базы данных, которые можно использовать для создания внешнего источника данных, который можно использовать PolyBase в Azure Synapse Analytics.
Azure Data Lake Store использует приложение Microsoft Entra для службы для проверки подлинности службы.
Создайте приложение Microsoft Entra и задокументируйте client_id, OAuth_2.0_Token_EndPoint и ключ перед созданием учетных данных в области базы данных.
-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';
-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH
IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',
SECRET = '<key>'
;