Toegang tot externe opslag met behulp van een serverloze SQL-pool in Azure Synapse Analytics
In dit artikel wordt beschreven hoe gebruikers gegevens kunnen lezen uit de bestanden die zijn opgeslagen in Azure Storage in een serverloze SQL-pool. Gebruikers hebben de volgende opties om toegang te krijgen tot de opslag:
- De functie OPENROWSET die ad-hocquery's voor de bestanden in Azure Storage mogelijk maakt.
- Externe tabel dat een vooraf gedefinieerde gegevensstructuur is die boven op de set externe bestanden is gebouwd.
De gebruiker kan verschillende verificatiemethoden gebruiken, zoals Microsoft Entra passthrough-verificatie (standaard voor Microsoft Entra-principals) en SAS-verificatie (standaard voor SQL-principals).
Query's uitvoeren op bestanden met OPENROWSET
Met OPENROWSET kunnen gebruikers externe bestanden in Azure Storage opvragen als ze toegang hebben tot de opslag. Een gebruiker die is verbonden met de serverloze SQL-pool, moet de volgende query gebruiken om de inhoud van de bestanden in Azure Storage te kunnen lezen:
SELECT * FROM
OPENROWSET(BULK 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/*.parquet', format= 'parquet') as rows
Een gebruiker kan toegang krijgen tot de opslag met de volgende toegangsregels:
- Microsoft Entra-gebruiker :
OPENROWSET
gebruikt de Microsoft Entra-identiteit van de beller voor toegang tot Azure Storage of toegang tot opslag met anonieme toegang. - SQL-gebruiker:
OPENROWSET
gebruikt anonieme toegang voor toegang tot de opslaglocatie, of kan worden geïmiteerd met behulp van een SAS-token of een beheerde identiteit van een werkruimte.
SQL-principals kunnen ook OPENROWSET gebruiken om rechtstreeks bestanden op te vragen die zijn beveiligd met SAS-tokens of beheerde identiteit van de werkruimte. Als een SQL-gebruiker deze functie uitvoert, moet een hoofdgebruiker met de machtiging ALTER ANY CREDENTIAL
referenties binnen serverbereik maken die overeenkomen met de URL in de functie (met behulp van de opslagnaam en container) en de machtiging REFERENCES heeft verleend voor de aanroeper van de OPENROWSET-functie:
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
Als er geen CREDENTIAL op serverniveau is die overeenkomt met de URL, of als de SQL-gebruiker geen referentiemachtiging voor deze referentie heeft, wordt de fout geretourneerd. SQL-principals kunnen zich niet imiteren met behulp van een Microsoft Entra-identiteit.
Notitie
Deze versie van OPENROWSET is ontworpen om snel en eenvoudig gegevens te verkennen met behulp van standaardauthenticatie. Als u imitatie of beheerde identiteit wilt gebruiken, gebruikt u OPENROWSET met DATA_SOURCE beschreven in de volgende sectie.
Query's uitvoeren op gegevensbronnen met OPENROWSET
Met OPENROWSET kunnen gebruikers een query uitvoeren op bestanden die in een externe gegevensbron zijn geplaatst:
SELECT * FROM
OPENROWSET(BULK 'file/path/*.parquet',
DATA_SOURCE = MyAzureInvoices,
FORMAT= 'parquet') as rows
De gebruiker die deze query uitvoert, moet toegang tot de bestanden kunnen hebben. De gebruikers moeten worden geïmiteerd met behulp van een SAS-token of een beheerde identiteit van de werkruimte als ze de bestanden niet rechtstreeks kunnen openen met hun Microsoft Entra-identiteit of anonieme toegang.
Met DATABASE SCOPED CREDENTIAL
geeft u op hoe gebruikers toegang kunnen krijgen tot bestanden op de gegevensbron waarnaar wordt verwezen (momenteel SAS en beheerde identiteit). Een hoofdgebruiker met de machtiging CONTROL DATABASE
moet DATABASE SCOPED CREDENTIAL
maken, dat wordt gebruikt om toegang te krijgen tot opslag, en EXTERNAL DATA SOURCE
, waarmee de URL van de gegevensbron en te gebruiken referenties worden opgegeven:
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) ;
Een aanroeper moet een van de volgende machtigingen hebben voor het uitvoeren van de OPENROWSET-functie:
- Een van de machtigingen voor het uitvoeren van OPENROWSET:
- Met
ADMINISTER BULK OPERATIONS
kan een gebruiker via aanmelding de OPENROWSET-functie uitvoeren. - Met
ADMINISTER DATABASE BULK OPERATIONS
kan een gebruiker binnen een databasebereik de OPENROWSET-functie uitvoeren.
- Met
REFERENCES DATABASE SCOPED CREDENTIAL
voor de referentie waarnaar wordt verwezen inEXTERNAL DATA SOURCE
.
EXTERNAL TABLE
Een gebruiker met de machtigingen voor het lezen van de tabel kan toegang krijgen tot externe bestanden met behulp van een EXTERNAL TABLE die wordt gemaakt boven op de set Azure Storage-mappen en -bestanden.
Een gebruiker met -machtigingen voor het maken van een externe tabel (bijvoorbeeld CREATE TABLE en ALTER ANY CREDENTIAL of REFERENCES DATABASE SCOPED CREDENTIAL) kunnen het volgende script gebruiken om een tabel boven op Azure Storage-gegevensbron te maken:
CREATE EXTERNAL TABLE [dbo].[DimProductexternal]
( ProductKey int, ProductLabel nvarchar, ProductName nvarchar )
WITH
(
LOCATION='/DimProduct/year=*/month=*' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat
) ;
De gebruiker die gegevens uit deze tabel leest, moet toegang tot de bestanden kunnen hebben. De gebruikers moeten worden geïmiteerd met behulp van een SAS-token of een beheerde identiteit van de werkruimte als ze de bestanden niet rechtstreeks kunnen openen met hun Microsoft Entra-identiteit of anonieme toegang.
Met DATABASE SCOPED CREDENTIAL geeft u op hoe gebruikers toegang kunnen krijgen tot bestanden op de gegevensbron waarnaar wordt verwezen. Een gebruiker met de machtiging CONTROL DATABASE moet DATABASE SCOPED CREDENTIAL maken dat wordt gebruikt om toegang te krijgen tot opslag en EXTERNAL DATA SOURCE waarmee de URL van de gegevensbron en te gebruiken referenties worden opgegeven:
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
) ;
Externe bestanden met EXTERNAL TABLE lezen
Met EXTERNAL TABLE kunt u gegevens lezen van de bestanden waarnaar wordt verwezen via de gegevensbron met behulp van de SQL SELECT-standaardinstructie:
SELECT *
FROM dbo.DimProductsExternal
Een aanroeper moet de volgende machtigingen hebben om gegevens te lezen:
SELECT
-machtiging IN de externe tabelREFERENCES DATABASE SCOPED CREDENTIAL
-machtiging alsDATA SOURCE
overCREDENTIAL
beschikt
Bevoegdheden
De volgende tabel geeft een lijst van de vereiste machtigingen voor de hierboven genoemde bewerkingen.
Query’s uitvoeren | Vereiste machtigingen |
---|---|
OPENROWSET(BULK) zonder gegevensbron | ADMINISTER BULK OPERATIONS , ADMINISTER DATABASE BULK OPERATIONS of SQL-aanmelding moet REFERENTIES::<URL> hebben voor met SAS beveiligde opslag |
OPENROWSET(BULK) met gegevensbron zonder referenties | ADMINISTER BULK OPERATIONS of ADMINISTER DATABASE BULK OPERATIONS , |
OPENROWSET(BULK) met gegevensbron en referenties | REFERENCES DATABASE SCOPED CREDENTIAL en één van ADMINISTER BULK OPERATIONS of ADMINISTER DATABASE BULK OPERATIONS |
CREATE EXTERNAL DATA SOURCE | ALTER ANY EXTERNAL DATA SOURCE en REFERENCES DATABASE SCOPED CREDENTIAL |
CREATE EXTERNAL TABLE | CREATE TABLE , ALTER ANY SCHEMA , ALTER ANY EXTERNAL FILE FORMAT en ALTER ANY EXTERNAL DATA SOURCE |
SELECT FROM EXTERNAL TABLE | SELECT TABLE en REFERENCES DATABASE SCOPED CREDENTIAL |
CETAS | Voor het maken van een tabel - CREATE TABLE , ALTER ANY SCHEMA , ALTER ANY DATA SOURCE en ALTER ANY EXTERNAL FILE FORMAT . Gegevens lezen: ADMINISTER BULK OPERATIONS of REFERENCES CREDENTIAL of SELECT TABLE per tabel/weergave/functie in query + lezen/schrijven-machtiging voor opslag |
Volgende stappen
U kunt nu doorgaan met de volgende Help-artikelen: