Zugreifen auf externen Speicher mithilfe des serverlosen SQL-Pools in Azure Synapse Analytics

Tip

Microsoft Fabric Data Warehouse ist ein relationales Enterprise-Warehouse auf einem Data Lake-Fundament mit zukunftsfähiger Architektur, integrierter KI und neuen Features. Wenn Sie mit Data Warehouse noch nicht vertraut sind, beginnen Sie mit Fabric Data Warehouse. Vorhandene dedizierte SQL-Pool-Workloads können auf Fabric aktualisieren, um neue Funktionen in den Bereichen Data Science, Echtzeitanalyse und Berichterstellung zu nutzen.

In diesem Artikel wird beschrieben, wie Benutzer Daten aus den dateien lesen können, die auf Azure Storage im serverlosen SQL-Pool gespeichert sind. Benutzer haben die folgenden Optionen für den Zugriff auf den Speicher:

  • OPENROWSET Funktion, die Ad-hoc-Abfragen über die Dateien in Azure Storage ermöglicht.
  • Externe Tabelle , die eine vordefinierte Datenstruktur ist, die auf einer Gruppe externer Dateien basiert.

Der Benutzer kann verschiedene Authentifizierungsmethoden wie Microsoft Entra Passthrough-Authentifizierung (Standard für Microsoft Entra Principals) und SAS-Authentifizierung (Standard für SQL-Principals) verwenden.

Abfragen von Dateien mit OPENROWSET

OPENROWSET ermöglicht Benutzern das Abfragen externer Dateien auf Azure Speicher, wenn sie Zugriff auf den Speicher haben. Ein Benutzer, der mit serverlosen SQL-Pool verbunden ist, sollte die folgende Abfrage verwenden, um den Inhalt der Dateien im Azure Speicher zu lesen:

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

Der Benutzer kann mithilfe der folgenden Zugriffsregeln auf den Speicher zugreifen:

  • Microsoft Entra Benutzer – OPENROWSET verwendet die Microsoft Entra-Identität des Anrufers, um auf Azure Storage oder auf Speicher mit anonymem Zugriff zuzugreifen.
  • SQL-Benutzer – OPENROWSET greift auf speicher mit anonymem Zugriff zu oder kann mit SAS-Token oder verwalteter Identität des Arbeitsbereichs imitiert werden.

SQL-Prinzipale können auch OPENROWSET verwenden, um dateien, die mit SAS-Token oder verwalteter Identität des Arbeitsbereichs geschützt sind, direkt abzufragen. Wenn ein SQL-Benutzer diese Funktion ausführt, muss ein Power-Benutzer mit ALTER ANY CREDENTIAL Berechtigung einen serverweiten Berechtigungsnachweis erstellen, der der URL in der Funktion (unter Verwendung des Speichernamens und Containers) entspricht, und dem Aufrufer der OPENROWSET-Funktion die REFERENCES-Berechtigung für diesen Berechtigungsnachweis erteilen.

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

Wenn keine Anmeldeinformationen auf Serverebene vorhanden sind, die mit der URL übereinstimmen, oder der SQL-Benutzer verfügt nicht über Verweise auf diese Anmeldeinformationen, wird der Fehler zurückgegeben. SQL-Hauptbenutzer können sich nicht mit einer Microsoft Entra-Identität identifizieren.

Note

Diese Version von OPENROWSET ist für eine schnelle und einfache Datensuche mit Standardauthentifizierung konzipiert. Um Impersonifizierung oder Verwaltete Identitäten zu nutzen, verwenden Sie OPENROWSET mit DATA_SOURCE, wie im nächsten Abschnitt beschrieben.

Abfragen von Datenquellen mit OPENROWSET

OPENROWSET ermöglicht es Dem Benutzer, die Dateien abzufragen, die in einer externen Datenquelle platziert wurden:

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

Der Benutzer, der diese Abfrage ausführt, muss auf die Dateien zugreifen können. Die Benutzer müssen mit SAS-Token oder Managed Identity of workspace wenn sie können nicht direkt über ihre Microsoft Entra Identity oder anonymous access auf die Dateien zugreifen.

DATABASE SCOPED CREDENTIAL Gibt an, wie auf Dateien in der referenzierten Datenquelle (derzeit SAS und verwaltete Identität) zugegriffen wird. "Power-User mit CONTROL DATABASE-Berechtigung müssen DATABASE SCOPED CREDENTIAL erstellen, die zum Zugriff auf Speicher verwendet werden, und EXTERNAL DATA SOURCE, die die URL der Datenquelle und die zu verwendenden Anmeldedaten spezifiziert."

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

Der Aufrufer muss über eine der folgenden Berechtigungen zum Ausführen der OPENROWSET-Funktion verfügen:

  • Eine der Berechtigungen zum Ausführen von OPENROWSET:
    • ADMINISTER BULK OPERATIONS ermöglicht die Anmeldung zum Ausführen der Funktion OPENROWSET.
    • Mit ADMINISTER DATABASE BULK OPERATIONS kann der datenbankspezifische Benutzer die Funktion OPENROWSET ausführen.
  • REFERENCES DATABASE SCOPED CREDENTIALfür die Anmeldeinformationen, auf die verwiesen wirdEXTERNAL DATA SOURCE.

Externe Tabelle

Benutzer mit Leseberechtigungen für die Tabelle können auf externe Dateien zugreifen, indem sie eine über einer Gruppe von Azure Storage-Ordnern und -Dateien erstellte EXTERNE TABELLE verwenden.

Benutzer mit Berechtigungen zum Erstellen einer externen Tabelle (z. B. CREATE TABLE and ALTER ANY CREDENTIAL or REFERENCES DATABASE SCOPED CREDENTIAL) kann das folgende Skript verwenden, um eine Tabelle mithilfe der Azure Storage Datenquelle zu erstellen.

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

Der Benutzer, der Daten aus dieser Tabelle liest, muss auf die Dateien zugreifen können. Die Benutzer müssen mit einem SAS-Token oder der Managed Identity des Arbeitsbereichs imitiert werden, wenn sie nicht direkt mit ihrer Microsoft Entra-Identität oder über anonymen Zugriff auf die Dateien zugreifen können.

DATABASE SCOPED CREDENTIAL gibt an, wie auf Dateien in der referenzierten Datenquelle zugegriffen werden soll. Benutzer mit CONTROL DATABASE-Berechtigung müssen DATENBANKBEREICHS-ANMELDEINFORMATIONEN erstellen, die für den Zugriff auf Speicher und EXTERNE DATENQUELLE verwendet werden, die die URL der Datenquelle und anmeldeinformationen angibt, die verwendet werden sollen:

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

Lesen externer Dateien mit EXTERNER TABELLE

EXTERNAL TABLE ermöglicht das Lesen von Daten aus den Dateien, auf die über die Datenquelle verwiesen wird, mithilfe der SQL SELECT-Standard-Anweisung:

SELECT *
FROM dbo.DimProductsExternal

Der Aufrufer muss über die folgenden Berechtigungen zum Lesen von Daten verfügen:

  • SELECT Berechtigung ON externe Tabelle
  • REFERENCES DATABASE SCOPED CREDENTIAL Berechtigung, wenn DATA SOURCE vorhanden CREDENTIAL

Erlaubnisse

In der folgenden Tabelle sind die erforderlichen Berechtigungen für die oben aufgeführten Vorgänge aufgeführt.

Abfrage Erforderliche Berechtigungen
OPENROWSET(BULK) ohne Datenquelle ADMINISTER BULK OPERATIONS, ADMINISTER DATABASE BULK OPERATIONS oder SQL Login muss Berechtigungen zu CREDENTIAL::<URL> für SAS-gesicherten Speicher aufweisen
OPENROWSET(BULK) mit Datenquelle ohne Anmeldedaten ADMINISTER BULK OPERATIONS oder ADMINISTER DATABASE BULK OPERATIONS,
OPENROWSET(BULK) mit Datenquelle und Anmeldedaten REFERENCES DATABASE SCOPED CREDENTIAL und eine von ADMINISTER BULK OPERATIONS oder ADMINISTER DATABASE BULK OPERATIONS
EXTERNE DATENQUELLE ERSTELLEN ALTER ANY EXTERNAL DATA SOURCE und REFERENCES DATABASE SCOPED CREDENTIAL
EXTERNE TABELLE ERSTELLEN CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL FILE FORMAT und ALTER ANY EXTERNAL DATA SOURCE
AUS EXTERNER TABELLE AUSWÄHLEN SELECT TABLE und REFERENCES DATABASE SCOPED CREDENTIAL
CETAS So erstellen Sie eine Tabelle – CREATE TABLE, ALTER ANY SCHEMA, , ALTER ANY DATA SOURCEund ALTER ANY EXTERNAL FILE FORMAT. So lesen Sie Daten: ADMINISTER BULK OPERATIONS oder REFERENCES CREDENTIAL oder SELECT TABLE je Tabelle/Ansicht/Funktion in der Abfrage + R/W-Berechtigung für den Speicher

Nächste Schritte

Sie sind jetzt bereit, mit den folgenden Anleitungen fortzufahren.