Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как создавать внешние таблицы или прием данных из учетных записей Azure Data Lake Storage (ADLS) 2-го поколения с помощью управляемого удостоверения.
Для выполнения этого руководства требуются следующие ресурсы:
- Учетная запись Azure Data Lake Storage (ADLS) 2-го поколения
- Рабочая область Azure Synapse Analytics и выделенный пул SQL
Каждая рабочая область Azure Synapse Analytics автоматически создает управляемое удостоверение, которое помогает настроить безопасный доступ к внешним данным из рабочей области. Чтобы узнать больше об управляемых удостоверениях для Azure Synapse Analytics, посетите страницу Управляемое удостоверение для службы Azure Synapse Analytics.
Чтобы разрешить управляемому удостоверению доступ к данным в учетных записях ADLS 2-го поколения, необходимо предоставить удостоверению доступ к исходной учетной записи. Чтобы предоставить необходимые разрешения, выполните следующие действия.
- Найдите свою учетную запись хранения на портале Azure .
- Выберите хранилище данных —> контейнеры и перейдите в папку, в которой нужны исходные данные внешней таблицы.
- Выберите Управление доступом (IAM).
- Выберите Добавить -> Добавить назначение роли.
- В списке ролей функций работ выберите Участник данных хранилища BLOB-объектов и нажмите Далее.
- На странице "Добавить назначение ролей" нажмите кнопку "+Выбрать членов". Откроется панель "Выбор участников".
- Введите имя идентификатора рабочей области. Идентификатор рабочей области совпадает с именем рабочей области. При отображении выберите удостоверение рабочей области, затем нажмите Выбрать.
- На странице Добавление назначения роли убедитесь, что в списке участников включена ваша учетная запись Microsoft Entra ID. После проверки нажмите кнопку "Проверить и назначить".
- На странице подтверждения просмотрите изменения и выберите " Проверить и назначить".
Теперь идентификатор рабочей области входит в роль участника данных объектов Blob хранилища и имеет доступ к исходной папке.
Примечание
Эти действия также применяются к защищенным учетным записям ADLS 2-го поколения, настроенным для ограничения общедоступного доступа. Если учетная запись хранения связана с защищенной учетной записью ADLS 2-го поколения или связана с виртуальной сетью, внешняя таблица или команда COPY INTO должна использовать управляемое удостоверение. Дополнительные сведения о защите учетной записи ADLS Gen2 см. в статье службы хранилища Azure Настройка брандмауэров и виртуальных сетей.
Инструкция T-SQL COPY INTO
обеспечивает гибкую, высокую пропускную способность приема данных в таблицы и является основной стратегией приема данных в выделенные таблицы пула SQL.
COPY INTO
позволяет пользователям получать данные из внешних расположений без необходимости создавать какие-либо из дополнительных объектов базы данных, необходимых для внешних таблиц.
Чтобы запустить инструкцию COPY INTO
с использованием управляемого удостоверения рабочей области для аутентификации, используйте следующую команду T-SQL:
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
CREDENTIAL = (IDENTITY = 'Managed Identity'),
[<CopyIntoOptions>]
);
Где:
-
<TableName>
— имя таблицы, в которую загружаются данные -
<AccountName>
— имя учетной записи ADLS 2-го поколения -
<Container>
— имя контейнера в учетной записи хранения, в которой хранятся исходные данные. -
<Folder>
— это папка (или путь с вложенными папками), где исходные данные хранятся в контейнере. Вы также можете указать имя файла, указывая непосредственно на один файл. -
<CopyIntoOptions>
— это список других параметров, которые вы хотите предоставить инструкции COPY INTO.
Дополнительные сведения и изучение полного синтаксиса COPY INTO см. в разделе COPY INTO (Transact-SQL).
Внешние таблицы позволяют пользователям запрашивать данные из учетных записей Azure Data Lake Storage (ADLS) 2-го поколения без необходимости приема данных. Пользователи могут создать внешнюю таблицу, которая указывает на файлы в контейнере ADLS 2-го поколения и запрашивать ее так же, как обычную таблицу пользователей.
Ниже описан процесс создания новой внешней таблицы, ссылающейся на данные в ADLS Gen2, с использованием управляемого удостоверения для аутентификации.
Для внешних таблиц требуется создать следующие объекты:
- Главный ключ базы данных, который шифрует секрет учетных данных, связанных с базой данных
- Учетные данные в контексте базы данных, связанные с удостоверением вашей рабочей области
- Внешний источник данных, указывающий на исходную папку
- Формат внешнего файла, определяющий формат исходных файлов
- Определение внешней таблицы, используемое для запросов
Чтобы выполнить эти действия, используйте редактор SQL в рабочей области Azure Synapse или предпочитаемый клиент SQL, подключенный к выделенному пулу SQL. Давайте подробно рассмотрим эти шаги.
Главный ключ базы данных — это симметричный ключ, используемый для защиты закрытых ключей сертификатов и асимметричных ключей, присутствующих в базе данных и секретах в учетных данных в области базы данных. Если в базе данных уже есть главный ключ, вам не нужно создавать новый ключ. Замените <Secure Password>
безопасным паролем. Этот пароль используется для шифрования главного ключа в базе данных.
Чтобы создать главный ключ, используйте следующую команду T-SQL:
-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';
Дополнительные сведения о главном ключе базы данных см. в статье CREATE MASTER KEY (Transact-SQL).
Учетные данные с областью видимости базы данных используют удостоверение рабочей области и необходимы для доступа к внешнему местоположению в любое время, когда внешняя таблица требует соединения с исходными данными.
Чтобы создать учетные данные, ограниченные областью базы данных, используйте следующую команду. Замените <CredentialName>
на имя, которое вы хотите использовать для учетных данных в области базы данных.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
Для получения дополнительных сведений об учетных данных в области базы данных см. статью CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Следующим шагом является создание внешнего источника данных, указывающего, где находятся исходные данные, используемые внешней таблицей.
Чтобы создать внешний источник данных, используйте следующую команду T-SQL:
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/',
CREDENTIAL = <CredentialName>
);
Где:
-
<ExternalDataSourceName>
— это имя, которое вы хотите использовать для внешнего источника данных. -
<AccountName>
— имя учетной записи ADLS 2-го поколения. -
<Container>
— это имя контейнера в учетной записи хранения, в которой хранятся исходные данные. -
<Folder>
— это папка (или путь с вложенными папками), где исходные данные хранятся в контейнере. Вы также можете указать имя файла, указывая непосредственно на один файл. -
<Credential>
— это имя учетной записи базы данных, созданной ранее.
Дополнительные сведения о внешних источниках данных см. в статье CREATE EXTERNAL DATA SOURCE (Transact-SQL).
Следующим шагом является создание формата внешнего файла. Он задает фактический макет данных, на которые ссылается внешняя таблица.
Чтобы создать формат внешнего файла, используйте следующую команду T-SQL. Замените <FileFormatName>
именем, которое вы хотите использовать для внешнего формата файла.
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True
)
);
В этом примере настройте такие параметры, как FIELD_TERMINATOR
, STRING_DELIMITER
FIRST_ROW
и другие, по мере необходимости в соответствии с исходными данными. Для получения дополнительных параметров форматирования и чтобы узнать больше о EXTERNAL FILE FORMAT
, см. CREATE EXTERNAL FILE FORMAT.
Теперь, когда создаются все необходимые объекты, в которых хранятся метаданные для безопасного доступа к внешним данным, пришло время создать внешнюю таблицу. Чтобы создать внешнюю таблицу, используйте следующую команду T-SQL:
-- Adjust the table name and columns to your desired name and external table schema
CREATE EXTERNAL TABLE <ExternalTableName> (
Col1 INT,
Col2 NVARCHAR(100),
Col4 INT
)
WITH
(
LOCATION = '<Path>',
DATA_SOURCE = <ExternalDataSourceName>,
FILE_FORMAT = <FileFormatName>
);
Где:
-
<ExternalTableName>
— это имя, которое вы хотите использовать для внешней таблицы. -
<Path>
— это путь к исходным данным относительно расположения, указанного во внешнем источнике данных. -
<ExternalDataSourceName>
— это имя созданного ранее внешнего источника данных. -
<FileFormatName>
— имя созданного ранее формата внешнего файла.
Обязательно измените имя таблицы и схему на нужное имя и схему данных в исходных файлах.
На этом этапе создаются все метаданные, необходимые для доступа к внешней таблице. Чтобы протестировать внешнюю таблицу, используйте запрос, например следующий пример T-SQL, чтобы проверить работу:
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
Если все было настроено правильно, данные из исходных данных должны отображаться в результате этого запроса.
Дополнительные сведения и изучение полного синтаксиса CREATE EXTERNAL TABLE
см. в статье CREATE EXTERNAL TABLE (Transact-SQL).