Tip
Microsoft Fabric Data Warehouse는 데이터 레이크 기반의 엔터프라이즈 규모 관계형 웨어하우스로, 미래 대비 아키텍처, 기본 제공 AI 및 새로운 기능을 제공합니다. 데이터 웨어하우징이 처음이라면, Fabric Data Warehouse부터 시작하세요. 기존
이 문서에서는 사용자가 서버리스 SQL 풀의 Azure Storage 저장된 파일에서 데이터를 읽는 방법을 설명합니다. 사용자는 스토리지에 액세스할 수 있는 다음 옵션이 있습니다.
- Azure Storage 파일에 대한 임시 쿼리를 사용하도록 설정하는 OPENROWSET 함수입니다.
- 외부 파일 집합 위에 빌드된 미리 정의된 데이터 구조인 외부 테이블입니다.
사용자는 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 ID를 사용하여 익명 액세스로 Azure Storage 액세스하거나 스토리지에 액세스합니다. - SQL 사용자 –
OPENROWSET익명 액세스를 사용하여 스토리지에 액세스하거나 SAS 토큰 또는 작업 영역의 관리 ID를 사용하여 가장할 수 있습니다.
SQL 보안 주체는 OPENROWSET을 사용하여 SAS 토큰 또는 작업 영역의 관리 ID로 보호되는 파일을 직접 쿼리할 수도 있습니다. SQL 사용자가 이 함수를 실행하는 경우 권한이 있는 ALTER ANY CREDENTIAL 전원 사용자는 함수의 URL과 일치하는 서버 범위 자격 증명(스토리지 이름 및 컨테이너 사용)을 만들고 OPENROWSET 함수 호출자에게 이 자격 증명에 대한 REFERENCES 권한을 부여해야 합니다.
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과 일치하는 서버 수준 CREDENTIAL이 없거나 SQL 사용자에게 이 자격 증명에 대한 참조 권한이 없는 경우 오류가 반환됩니다. SQL 보안 주체는 일부 Microsoft Entra 아이덴티티를 사용하여 가장할 수 없습니다.
메모
이 버전의 OPENROWSET은 기본 인증을 사용하여 빠르고 쉬운 데이터 탐색을 위해 설계되었습니다. 가장화 또는 관리 ID를 활용하려면, 다음 섹션에서 설명하는 DATA_SOURCE와 함께 OPENROWSET을 사용하세요.
OPENROWSET를 사용하여 데이터 원본 쿼리
OPENROWSET을 사용하면 사용자가 일부 외부 데이터 원본에 배치된 파일을 쿼리할 수 있습니다.
SELECT * FROM
OPENROWSET(BULK 'file/path/*.parquet',
DATA_SOURCE = MyAzureInvoices,
FORMAT= 'parquet') as rows
이 쿼리를 실행하는 사용자는 파일에 액세스할 수 있어야 합니다. 사용자는 Microsoft Entra ID 또는 익명 액세스를 사용하여 파일에 직접 액세스할 수 없을 경우, SAS 토큰 또는 작업 영역의 관리 ID를 사용하여 가장해야 합니다.
DATABASE SCOPED CREDENTIAL 는 참조된 데이터 원본(현재 SAS 및 관리 ID)의 파일에 액세스하는 방법을 지정합니다. 고급 사용자는 CONTROL DATABASE 권한으로 스토리지에 접근하기 위한 DATABASE SCOPED CREDENTIAL을 생성하고, 데이터 소스의 URL과 사용해야 할 자격 증명을 지정하는 EXTERNAL DATA SOURCE을 만들어야 합니다.
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 Storage 폴더 및 파일 집합 위에 만든 EXTERNAL TABLE을 사용하여 외부 파일에 액세스할 수 있습니다.
Azure Storage 데이터 원본 위에 테이블을 생성하려면 외부 테이블 생성 권한이 있는 사용자 (예: CREATE TABLE, ALTER ANY CREDENTIAL 또는 REFERENCES DATABASE SCOPED CREDENTIAL 필요)는 다음 스크립트를 사용할 수 있습니다.
CREATE EXTERNAL TABLE [dbo].[DimProductexternal]
( ProductKey int, ProductLabel nvarchar, ProductName nvarchar )
WITH
(
LOCATION='/DimProduct/year=*/month=*' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat
) ;
이 테이블에서 데이터를 읽는 사용자는 파일에 액세스할 수 있어야 합니다. 사용자는 Microsoft Entra ID 또는 익명 액세스를 사용하여 파일에 직접 액세스할 수 없는 경우, SAS 토큰 또는 작업 영역의 관리 ID를 사용하여 가장해야 합니다.
DATABASE SCOPED CREDENTIAL은 참조된 데이터 원본의 파일에 액세스하는 방법을 지정합니다. CONTROL DATABASE 권한이 있는 사용자는 사용해야 하는 데이터 원본 및 자격 증명의 URL을 지정하는 스토리지 및 외부 데이터 원본에 액세스하는 데 사용할 DATABASE SCOPED CREDENTIAL을 만들어야 합니다.
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 SOURCECREDENTIAL
Permissions
다음 표에서는 위에 나열된 작업에 필요한 권한을 나열합니다.
| Query | 필요한 권한 |
|---|---|
| 데이터 원본이 없는 OPENROWSET(BULK) |
ADMINISTER BULK OPERATIONS, ADMINISTER DATABASE BULK OPERATIONS 및 SQL 로그인은 SAS로 보호되는 스토리지에 대한 REFERENCES CREDENTIAL::<URL>을(를) 가지고 있어야 합니다. |
| 자격 증명이 없는 데이터 원본이 있는 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 CREDENTIALSELECT TABLE 쿼리의 각 테이블/뷰/함수에 따라 + 스토리지에 대한 R/W 권한 |
다음 단계
이제 다음 방법 문서를 계속 진행할 준비가 되었습니다.