Tutorial: Laden externer Daten mithilfe von Microsoft Entra ID
In diesem Artikel wird erläutert, wie Sie externe Tabellen mithilfe von Microsoft Entra ID-Passthrough erstellen.
Voraussetzungen
Für dieses Tutorial benötigen Sie die folgenden Ressourcen:
- Einen Azure Synapse Analytics-Arbeitsbereich und einen dedizierten SQL-Pool
Erteilen von Zugriff auf das Speicherkonto für das Microsoft Entra ID-Konto
In diesem Beispiel wird ein Microsoft Entra ID-Konto (oder eine Gruppe) verwendet, um sich bei den Quelldaten zu authentifizieren.
Um den Zugriff auf Daten auf Azure Data Lake Storage Gen2-Konten (ADLS) zu ermöglichen, müssen Sie Ihrem Microsoft Entra ID-Konto (oder Ihrer Gruppe) Zugriff auf das Quellkonto gewähren. Befolgen Sie diese Schritte, um die richtigen Berechtigungen zu erteilen:
- Suchen Sie im Azure-Portal nach Ihrem Speicherkonto.
- Wählen Sie Datenspeicher > Container aus, und navigieren Sie zu dem Ordner, in dem die Quelldaten sind, auf die die externe Tabelle Zugriff benötigt.
- Wählen Sie Zugriffssteuerung (IAM) aus.
- Wählen Sie Hinzufügen > Rollenzuweisung hinzufügen aus.
- Wählen Sie in der Liste der Stellenfunktionsrollen Storage-Blobdatenleser aus, und wählen Sie Weiter aus. Wenn Schreibberechtigungen erforderlich sind, wählen Sie Mitwirkender an Storage Blob-Daten.
- Wählen Sie auf der Seite Rollenzuweisung hinzufügen die Option + Mitglieder auswählen aus. Der Bereich Mitglieder auswählen wird in der rechten Ecke geöffnet.
- Geben Sie den Namen des gewünschten Microsoft Entra ID-Kontos ein. Wenn es angezeigt wird, wählen Sie Ihr gewünschtes Konto und dann Auswählen aus.
- Vergewissern Sie sich auf der Seite Rollenzuweisung hinzufügen, dass die Liste der Mitglieder Ihr gewünschtes Microsoft Entra ID-Konto enthält. Sobald Sie das bestätigt haben, wählen Sie Überprüfen und zuweisen aus.
- Überprüfen Sie auf der Bestätigungsseite die Änderungen, und wählen Sie Überprüfen und zuweisen aus.
Das Microsoft Entra ID-Konto oder die Gruppe ist jetzt Mitglied der Rolle „Storage-Blobdatenleser“ und hat Zugriff auf den Quellordner.
Erfassen von Daten mithilfe von COPY INTO
Die T-SQL-Anweisung COPY INTO
ermöglicht eine flexible Datenerfassung mit hohem Durchsatz in Ihre Tabellen und ist die primäre Strategie zum Erfassen von Daten in Ihre dedizierten SQL-Pooltabellen. Sie ermöglicht Benutzern das Erfassen von Daten von externen Speicherorten, ohne dass sie zusätzliche Datenbankobjekte erstellen müssen, die für externe Tabellen erforderlich sind.
Die COPY INTO
-Anweisung verwendet das Argument CREDENTIAL
, um die Authentifizierungsmethode anzugeben, die zum Herstellen einer Verbindung mit dem Quellkonto verwendet wird. Bei der Authentifizierung mithilfe von Microsoft Entra ID oder eines öffentlichen Speicherkontos muss CREDENTIAL
jedoch nicht angegeben werden. Um die COPY INTO
-Anweisung mit Entra ID-Authentifizierung auszuführen, verwenden Sie den folgenden T-SQL-Befehl:
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
[<CopyIntoOptions>]
);
Hierbei gilt:
<TableName>
ist der Name der Tabelle, in die Daten erfasst werden sollen.<AccountName>
ist Ihr ADLS Gen2-Kontoname.<Container>
ist der Name des Containers in Ihrem Speicherkonto, in dem die Quelldaten gespeichert werden.<Folder>
ist der Ordner (oder Pfad mit Unterordnern), in dem die Quelldaten in Ihrem Container gespeichert werden. Sie können auch einen Dateinamen angeben, wenn Sie direkt auf eine einzelne Datei verweisen.<CopyIntoOptions>
ist die Liste aller anderen Optionen, die Sie derCOPY INTO
-Anweisung angeben möchten.
Weitere Informationen zur vollständigen Syntax finden Sie unter COPY INTO (Transact-SQL).
Abfragen von Daten in ADLS Gen2 mithilfe externer Tabellen
Externe Tabellen ermöglichen es Benutzern, Daten aus Azure Data Lake Storage Gen2-Konten (ADLS) abzufragen, ohne zuerst Daten erfassen zu müssen. Benutzer können eine externe Tabelle erstellen, die auf Dateien in einem ADLS Gen2-Container verweist, und sie wie eine gewöhnliche Benutzertabelle abfragen.
Die folgenden Schritte beschreiben den Prozess zum Erstellen einer neuen externen Tabelle, die auf Daten in ADLS Gen2 verweist, wobei die Entra ID-Authentifizierung verwendet wird.
Erstellen der erforderlichen Datenbankobjekte
Für externe Tabellen müssen die folgenden Objekte erstellt werden:
- Eine externe Datenquelle, die auf den Quellordner verweist
- Ein externes Dateiformat, das das Format der Quelldateien definiert
- Eine externe Tabellendefinition, die für Abfragen verwendet wird
Um diese Schritte auszuführen, müssen Sie den SQL-Editor im Azure Synapse-Arbeitsbereich oder Ihren bevorzugten SQL-Client verwenden, der mit Ihrem dedizierten SQL-Pool verbunden ist. Sehen wir uns diese Schritte im Detail an.
Erstellen der externen Datenquelle
Der nächste Schritt besteht darin, eine externe Datenquelle zu erstellen, die angibt, wo sich die von der externen Tabelle verwendeten Quelldaten befinden.
Verwenden Sie zum Erstellen der externen Datenquelle den folgenden T-SQL-Befehl:
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/'
);
Hierbei gilt:
<ExternalDataSourceName>
ist der Name, den Sie für Ihre externe Datenquelle verwenden möchten.<AccountName>
ist Ihr ADLS Gen2-Kontoname.<Container>
ist der Name des Containers in Ihrem Speicherkonto, in dem die Quelldaten gespeichert werden.<Folder>
ist der Ordner (oder Pfad mit Unterordnern), in dem die Quelldaten in Ihrem Container gespeichert werden.
Weitere Informationen zu externen Datenquellen finden Sie unter CREATE EXTERNAL DATA SOURCE (Transact-SQL).
Erstellen des externen Dateiformats
Der nächste Schritt besteht darin, das externe Dateiformat zu erstellen. Es gibt das tatsächliche Layout der Daten an, auf die von der externen Tabelle verwiesen wird.
Verwenden Sie zum Erstellen des externen Dateiformats den folgenden T-SQL-Befehl. Ersetzen Sie <FileFormatName>
durch den Namen, den Sie für das externe Dateiformat verwenden möchten.
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True
)
);
Passen Sie in diesem Beispiel Parameter wie FIELD_TERMINATOR
, STRING_DELIMITER
, FIRST_ROW
und weitere nach Bedarf gemäß Ihren Quelldaten an. Weitere Formatierungsoptionen und weitere Informationen finden Sie unter CREATE EXTERNAL FILE FORMAT (Transact-SQL).
Erstellen der externen Tabelle
Da nun die erforderlichen Objekte erstellt wurden, die die Metadaten für den sicheren Zugriff auf externe Daten enthalten, ist es an der Zeit, die externe Tabelle zu erstellen. Verwenden Sie zum Erstellen der externen Tabelle den folgenden T-SQL-Befehl:
-- Adjust the table name and columns to your desired name and external table schema
CREATE EXTERNAL TABLE <ExternalTableName> (
Col1 INT,
Col2 NVARCHAR(100),
Col4 INT
)
WITH
(
LOCATION = '<Path>',
DATA_SOURCE = <ExternalDataSourceName>,
FILE_FORMAT = <FileFormatName>
);
Hierbei gilt:
<ExternalTableName>
ist der Name, den Sie für Ihre externe Tabelle verwenden möchten.<Path>
ist der Pfad der Quelldaten relativ zum Speicherort, der in der externen Datenquelle angegeben ist.<ExternalDataSourceName>
ist der Name der externen Datenquelle, die Sie erstellt haben.<FileFormatName>
ist der Name des externen Dateiformats, das Sie erstellt haben.
Denken Sie daran, den Tabellennamen und das Schema an den gewünschten Namen und das Schema der Daten in den Quelldateien anzupassen.
Abfragen der externen Tabelle
Zu diesem Zeitpunkt sind alle Metadaten erstellt, die für den Zugriff auf die externe Tabelle erforderlich sind. Verwenden Sie zum Testen der externen Tabelle eine Abfrage wie das folgende T-SQL-Beispiel, um Ihre Arbeit zu validieren:
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
Wenn alles ordnungsgemäß konfiguriert wurde, sollten die Daten aus den Quelldaten als Ergebnis dieser Abfrage angezeigt werden.
Weitere Informationen zu CREATE EXTERNAL TABLE
finden Sie unter CREATE EXTERNAL TABLE (Transact-SQL).