Få åtkomst till extern lagring med hjälp av en serverlös SQL-pool i Azure Synapse Analytics

Tip

Microsoft Fabric Data Warehouse är ett relationslager i företagsskala på en datasjögrund med en framtidsklar arkitektur, inbyggd AI och nya funktioner. Om du är nybörjare på datalager börjar du med Fabric Data Warehouse. Befintliga dedicerade SQL-poolarbetsbelastningar kan uppgraderas till Fabric för att få åtkomst till nya funktioner inom datavetenskap, realtidsanalys och rapportering.

Den här artikeln beskriver hur användare kan läsa data från de filer som lagras på Azure Storage i en serverlös SQL-pool. Användarna har följande alternativ för att få åtkomst till lagring:

  • funktionen OPENROWSET som aktiverar ad hoc-frågor över filerna i Azure Storage.
  • Extern tabell som är en fördefinierad datastruktur som bygger på en uppsättning externa filer.

Användaren kan använda oberoende autentiseringsmetoder till exempel Microsoft Entra genomströmningsautentisering (standard för Microsoft Entra huvudnamn) och SAS-autentisering (standard för SQL-huvudnamn).

Fråga efter filer med OPENROWSET

OPENROWSET gör det möjligt för användare att fråga externa filer på Azure lagring om de har åtkomst till lagringen. En användare som är ansluten till en serverlös SQL-pool bör använda följande fråga för att läsa innehållet i filerna på Azure lagring:

SELECT * FROM
 OPENROWSET(BULK 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/*.parquet', format= 'parquet') as rows

Användaren kan komma åt lagring med hjälp av följande åtkomstregler:

  • Microsoft Entra användare - OPENROWSET använder Microsoft Entra-användarens identitet för att komma åt Azure Storage eller komma åt lagring med anonym åtkomst.
  • SQL-användare – OPENROWSET kommer åt lagring med anonym åtkomst eller kan personifieras med hjälp av SAS-token eller hanterad identitet för arbetsytan.

SQL-principaler kan också använda OPENROWSET för att direkt fråga filer som skyddas med SAS-token eller hanterad identitet för arbetsytan. Om en SQL-användare kör den här funktionen måste en power-användare med ALTER ANY CREDENTIAL behörighet skapa en serveromfattande autentiseringsuppgift som matchar URL i funktionen (med lagringsnamn och container) och tilldela behörigheten REFERENCES för den här autentiseringsuppgiften till anroparen av OPENROWSET-funktionen.

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

Om det inte finns någon CREDENTIAL på servernivå som matchar URL:en, eller om SQL-användaren inte har referensbehörighet för den här autentiseringsuppgiften, returneras felet. SQL-principaler kan inte imitera genom vissa Microsoft Entra-identiteter.

Anmärkning

Den här versionen av OPENROWSET är utformad för snabb och enkel datautforskning med standardautentisering. Om du vill utnyttja personifiering eller hanterad identitet använder du OPENROWSET med DATA_SOURCE som beskrivs i nästa avsnitt.

Fråga datakällor med OPENROWSET

OPENROWSET gör det möjligt för användaren att köra frågor mot filerna som placeras på en extern datakälla:

SELECT * FROM
 OPENROWSET(BULK 'file/path/*.parquet',
 DATA_SOURCE = MyAzureInvoices,
 FORMAT= 'parquet') as rows

Användaren som kör den här frågan måste kunna komma åt filerna. Användarna måste efterliknas med hjälp av SAS-token eller Hanterad identitet för arbetsytan om de inte kan komma åt filerna direkt med hjälp av sin Microsoft Entra identitet eller anonym åtkomst.

DATABASE SCOPED CREDENTIAL anger hur du kommer åt filer på den refererade datakällan (för närvarande SAS och hanterad identitet). Power-användare med CONTROL DATABASE behörighet skulle behöva skapa DATABASE SCOPED CREDENTIAL som ska användas för att komma åt lagring och EXTERNAL DATA SOURCE som anger URL för datakälla och autentiseringsuppgifter som ska användas:

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&amp;sp=rwac&amp;se=2017-02-01T00:55:34Z&amp;st=201********' ;

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
 WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/' ,
 CREDENTIAL = AccessAzureInvoices) ;

Anroparen måste ha någon av följande behörigheter för att köra funktionen OPENROWSET:

  • En av behörigheterna för att köra OPENROWSET:
    • ADMINISTER BULK OPERATIONS aktiverar inloggning för att köra funktionen OPENROWSET.
    • ADMINISTER DATABASE BULK OPERATIONS gör att användare med databasomfång kan köra OPENROWSET-funktionen.
  • REFERENCES DATABASE SCOPED CREDENTIAL till autentiseringsuppgifterna som refereras i EXTERNAL DATA SOURCE.

EXTERN TABELL

Användare med behörighet att läsa tabellen kan komma åt externa filer med hjälp av en EXTERN TABELL som skapats ovanpå uppsättningen med Azure Storage mappar och filer.

Användare som har behörigheter för att skapa en extern tabell (till exempel CREATE TABLE och ALTER ANY CREDENTIAL or REFERENCES DATABASE SCOPED CREDENTIAL) kan använda följande skript för att skapa en tabell ovanpå Azure Storage datakälla:

CREATE EXTERNAL TABLE [dbo].[DimProductexternal]
( ProductKey int, ProductLabel nvarchar, ProductName nvarchar )
WITH
(
LOCATION='/DimProduct/year=*/month=*' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat
) ;

Användare som läser data från den här tabellen måste kunna komma åt filerna. Användarna måste utges med hjälp av SAS-token eller Hanterad identitet för arbetsytan om de inte kan komma åt filerna direkt med sin Microsoft Entra-identitet eller anonym åtkomst.

DATABASE SCOPED CREDENTIAL anger hur du kommer åt filer på den refererade datakällan. Användare med behörighet för KONTROLLDATABAS behöver skapa en DATABASOMFATTANDE autentiseringsuppgift som ska användas för att komma åt lagring samt en EXTERN DATAKÄLLA som anger URL:en för datakällan och de autentiseringsuppgifter som ska användas.

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
 ) ;

Läs externa filer med EXTERN TABELL

MED EXTERN TABELL kan du läsa data från de filer som refereras via datakällan med hjälp av standard-SQL SELECT-instruktionen:

SELECT *
FROM dbo.DimProductsExternal

Anroparen måste ha följande behörigheter för att läsa data:

  • SELECT behörighet PÅ extern tabell
  • REFERENCES DATABASE SCOPED CREDENTIAL behörighet om DATA SOURCE har CREDENTIAL

Behörigheter

I följande tabell visas nödvändiga behörigheter för de åtgärder som anges ovan.

Sökfråga Behörigheter som krävs
OPENROWSET(BULK) utan datakälla ADMINISTER BULK OPERATIONS, ADMINISTER DATABASE BULK OPERATIONS, eller SQL-inloggning måste ha REFERENSER CREDENTIAL::<URL> för SAS-skyddad lagring
OPENROWSET(BULK) med datakälla utan autentiseringsuppgifter ADMINISTER BULK OPERATIONS eller ADMINISTER DATABASE BULK OPERATIONS,
OPENROWSET(BULK) med datakälla och autentiseringsuppgifter REFERENCES DATABASE SCOPED CREDENTIAL och en av ADMINISTER BULK OPERATIONS eller ADMINISTER DATABASE BULK OPERATIONS
SKAPA EXTERN DATAKÄLLA ALTER ANY EXTERNAL DATA SOURCE och REFERENCES DATABASE SCOPED CREDENTIAL
SKAPA EXTERN TABELL CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL FILE FORMAToch ALTER ANY EXTERNAL DATA SOURCE
VÄLJ FRÅN EXTERN TABELL SELECT TABLE och REFERENCES DATABASE SCOPED CREDENTIAL
CETAS Så här skapar du tabellen - CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY DATA SOURCEoch ALTER ANY EXTERNAL FILE FORMAT. Läsa data: ADMINISTER BULK OPERATIONS eller REFERENCES CREDENTIAL eller SELECT TABLE per varje tabell/vy/funktion i förfrågan + läs-/skrivrättighet för lagring

Nästa steg

Nu är du redo att fortsätta med följande instruktionsartiklar: