Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как пользователи могут считывать данные из файлов, хранящихся в службе хранилища Azure, в бессерверном пуле SQL. У пользователей есть следующие варианты доступа к хранилищу:
- Функция OPENROWSET, которая включает нерегламентированные запросы по файлам в службе хранилища Azure.
- Внешняя таблица , которая представляет собой предопределенную структуру данных, созданную на основе набора внешних файлов.
Пользователь может использовать различные методы проверки подлинности, такие как сквозная проверка подлинности Microsoft Entra (по умолчанию для субъектов Microsoft Entra) и аутентификация SAS (по умолчанию для субъектов SQL).
Запрос файлов с помощью OPENROWSET
OPENROWSET позволяет пользователям запрашивать внешние файлы в хранилище Azure, если у них есть доступ к хранилищу. Пользователь, подключенный к бессерверному пулу SQL, должен использовать следующий запрос для чтения содержимого файлов в хранилище Azure:
SELECT * FROM
OPENROWSET(BULK 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/*.parquet', format= 'parquet') as rows
Пользователь может получить доступ к хранилищу с помощью следующих правил доступа:
- Пользователь Microsoft Entra —
OPENROWSET
будет использовать удостоверение вызывающего пользователя Microsoft Entra для доступа к службе хранилища Azure или доступа к хранилищу с анонимным доступом. - Пользователь SQL —
OPENROWSET
получит доступ к хранилищу с анонимным доступом или может быть олицетворен с помощью маркера SAS или управляемого удостоверения рабочей области.
Субъекты SQL также могут использовать OPENROWSET для прямого запроса файлов, защищенных маркерами SAS или управляемым удостоверением рабочей области. Если пользователь SQL выполняет эту функцию, пользователь power user с разрешением должен создать учетные данные на ALTER ANY CREDENTIAL
уровне сервера, соответствующие URL-адресу функции (используя имя хранилища и контейнер) и предоставленные разрешения REFERENCES для этих учетных данных вызывающему функции OPENROWSET:
EXECUTE AS somepoweruser
CREATE CREDENTIAL [https://<storage_account>.dfs.core.windows.net/<container>]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sas token';
GRANT REFERENCES ON CREDENTIAL::[https://<storage_account>.dfs.core.windows.net/<container>] TO sqluser
Если учетные данные на уровне сервера не соответствуют URL-адресу или у пользователя SQL нет разрешений на ссылки для этих учетных данных, будет возвращена ошибка. Субъекты SQL не могут олицетворить с помощью некоторых удостоверений Microsoft Entra.
Примечание.
Эта версия OPENROWSET предназначена для быстрого и простого изучения данных с помощью проверки подлинности по умолчанию. Чтобы использовать олицетворение или управляемое удостоверение, используйте OPENROWSET с DATA_SOURCE, как описано в следующем разделе.
Запрос источников данных с помощью OPENROWSET
OPENROWSET позволяет пользователю запрашивать файлы, помещенные в некоторый внешний источник данных:
SELECT * FROM
OPENROWSET(BULK 'file/path/*.parquet',
DATA_SOURCE = MyAzureInvoices,
FORMAT= 'parquet') as rows
Пользователь, выполняющий этот запрос, должен иметь доступ к файлам. Пользователи должны быть олицетворены с помощью маркера SAS или управляемого удостоверения рабочей области , если они не могут напрямую получить доступ к файлам с помощью удостоверения Microsoft Entra или анонимного доступа.
DATABASE SCOPED CREDENTIAL
указывает, как получить доступ к файлам в указанном источнике данных (в настоящее время SAS и Managed Identity). Опытному пользователю с CONTROL DATABASE
разрешением потребуется создать DATABASE SCOPED CREDENTIAL
, который будет использоваться для доступа к хранилищу, и EXTERNAL DATA SOURCE
, что указывает URL-адрес источника данных и учетные данные, которые следует использовать:
EXECUTE AS somepoweruser;
-- Create MASTER KEY if it doesn't exists in database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'some very strong password';
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=201********' ;
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/' ,
CREDENTIAL = AccessAzureInvoices) ;
Вызывающий объект должен иметь одно из следующих разрешений для выполнения функции OPENROWSET:
- Одно из разрешений для выполнения OPENROWSET:
-
ADMINISTER BULK OPERATIONS
позволяет выполнить вход для выполнения функции OPENROWSET. -
ADMINISTER DATABASE BULK OPERATIONS
позволяет пользователю в пределах базы данных выполнить функцию OPENROWSET.
-
-
REFERENCES DATABASE SCOPED CREDENTIAL
учетные данные, на которые ссылается ссылкаEXTERNAL DATA SOURCE
.
ВНЕШНЯЯ ТАБЛИЦА
Пользователь с разрешениями на чтение таблицы может получить доступ к внешним файлам с помощью ВНЕШНЕЙ ТАБЛИЦЫ, созданной в верхней части набора папок и файлов службы хранилища Azure.
Пользователь с разрешениями на создание внешней таблицы (например, CREATE TABLE и ALTER ANY CREDENTIAL или REFERENCES DATABASE SCOPED CREDENTIAL) может использовать следующий сценарий для создания таблицы поверх источника данных службы хранилища Azure:
CREATE EXTERNAL TABLE [dbo].[DimProductexternal]
( ProductKey int, ProductLabel nvarchar, ProductName nvarchar )
WITH
(
LOCATION='/DimProduct/year=*/month=*' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat
) ;
Пользователь, считывающий данные из этой таблицы, должен иметь доступ к файлам. Пользователи должны быть олицетворены с помощью маркера SAS или управляемого удостоверения рабочей области , если они не могут напрямую получить доступ к файлам с помощью удостоверения Microsoft Entra или анонимного доступа.
DATABASE SCOPED CREDENTIAL указывает, как получить доступ к файлам в источнике данных, на который ссылается ссылка. Пользователю с разрешением CONTROL DATABASE потребуется создать DATABASE SCOPED CREDENTIAL, который будет использоваться для доступа к хранилищу и внешнему источнику ДАННЫХ, который указывает URL-адрес источника данных и учетных данных, которые следует использовать:
EXECUTE AS somepoweruser;
-- Create MASTER KEY if it doesn't exists in database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'some very strong password';
CREATE DATABASE SCOPED CREDENTIAL cred
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=201********' ;
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>' ,
CREDENTIAL = cred
) ;
Чтение внешних файлов с помощью EXTERNAL TABLE
EXTERNAL TABLE позволяет считывать данные из файлов, на которые ссылается источник данных, с помощью стандартной инструкции SQL SELECT:
SELECT *
FROM dbo.DimProductsExternal
Вызывающий объект должен иметь следующие разрешения для чтения данных:
-
SELECT
разрешение НА внешнюю таблицу -
REFERENCES DATABASE SCOPED CREDENTIAL
разрешение приDATA SOURCE
наличииCREDENTIAL
Разрешения
В следующей таблице перечислены необходимые разрешения для операций, перечисленных выше.
Запрос | Необходимые разрешения |
---|---|
OPENROWSET(BULK) без источника данных |
ADMINISTER BULK OPERATIONS , ADMINISTER DATABASE BULK OPERATIONS или имя входа SQL должно иметь ССЫЛКИ CREDENTIAL::<URL> для хранилища, защищенного SAS |
OPENROWSET(BULK) с источником данных без учетных данных |
ADMINISTER BULK OPERATIONS или ADMINISTER DATABASE BULK OPERATIONS , |
OPENROWSET(BULK) с источником данных с учетными данными |
REFERENCES DATABASE SCOPED CREDENTIAL и одно из ADMINISTER BULK OPERATIONS или ADMINISTER DATABASE BULK OPERATIONS |
СОЗДАНИЕ ВНЕШНЕГО ИСТОЧНИКА ДАННЫХ |
ALTER ANY EXTERNAL DATA SOURCE и REFERENCES DATABASE SCOPED CREDENTIAL . |
СОЗДАТЬ ВНЕШНЮЮ ТАБЛИЦУ |
CREATE TABLE , ALTER ANY SCHEMA , ALTER ANY EXTERNAL FILE FORMAT и ALTER ANY EXTERNAL DATA SOURCE |
ВЫБОР ИЗ ВНЕШНЕЙ ТАБЛИЦЫ |
SELECT TABLE и REFERENCES DATABASE SCOPED CREDENTIAL . |
CETAS | Создание таблицы — CREATE TABLE , ALTER ANY SCHEMA , ALTER ANY DATA SOURCE и ALTER ANY EXTERNAL FILE FORMAT . Чтение данных: ADMINISTER BULK OPERATIONS или REFERENCES CREDENTIAL или SELECT TABLE для каждой таблицы, представления или функции в запросе + права R/W на хранилище |
Дальнейшие действия
Теперь вы готовы продолжить работу со следующими статьями о том, как: