Självstudie: Läsa in externa data med hjälp av en hanterad identitet
I den här artikeln beskrivs hur du skapar externa tabeller eller matar in data från Azure Data Lake Storage -konton (ADLS) Gen2 med hjälp av en hanterad identitet.
Förutsättningar
Följande resurser krävs för att slutföra den här självstudien:
- Ett Azure Data Lake Storage-konto (ADLS) Gen2
- En Azure Synapse Analytics-arbetsyta och en dedikerad SQL-pool
Ge arbetsytans identitet åtkomst till lagringskontot
Varje Azure Synapse Analytics-arbetsyta skapar automatiskt en hanterad identitet som hjälper dig att konfigurera säker åtkomst till externa data från din arbetsyta. Mer information om hanterade identiteter för Azure Synapse Analytics finns i Hanterad tjänstidentitet för Azure Synapse Analytics.
För att din hanterade identitet ska kunna komma åt data på ADLS Gen2-konton måste du ge din identitet åtkomst till källkontot. Följ dessa steg för att bevilja rätt behörigheter:
- Leta reda på ditt lagringskonto i Azure Portal.
- Välj Datalagring –> Containrar och navigera till den mapp där källdata som den externa tabellen behöver åtkomst till finns.
- Välj Åtkomstkontroll (IAM) .
- Välj Lägg till –> Lägg till rolltilldelning.
- I listan över jobbfunktionsroller väljer du Lagringsblobdatadeltagare och väljer Nästa.
- På sidan Lägg till rolltilldelning väljer du + Välj medlemmar. Fönstret Välj medlemmar öppnas.
- Ange namnet på din arbetsyteidentitet. Arbetsytans identitet är samma som namnet på arbetsytan. När du visar den väljer du din arbetsyteidentitet och sedan Välj.
- På sidan Lägg till rolltilldelning kontrollerar du att listan med medlemmar innehåller ditt önskade Microsoft Entra-ID-konto. När du har verifierat väljer du Granska + tilldela.
- Granska ändringarna på bekräftelsesidan och välj Granska + tilldela.
Din arbetsyteidentitet är nu medlem i rollen Storage Blob Data-deltagare och har åtkomst till källmappen.
Kommentar
De här stegen gäller även för säkra ADLS Gen2-konton som är konfigurerade för att begränsa offentlig åtkomst. Mer information om hur du skyddar ditt ADLS Gen2-konto finns i Konfigurera Azure Storage-brandväggar och virtuella nätverk.
Mata in data med COPY INTO
T-SQL-instruktionen COPY INTO
ger flexibel datainmatning med högt dataflöde i dina tabeller och är den primära strategin för att mata in data i dina dedikerade SQL-pooltabeller. COPY INTO
tillåter användare att mata in data från externa platser utan att behöva skapa något av de extra databasobjekt som krävs för externa tabeller.
Använd följande T-SQL-kommando för att köra -instruktionen COPY INTO
med en hanterad arbetsyteidentitet för autentisering:
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
CREDENTIAL = (IDENTITY = 'Managed Identity'),
[<CopyIntoOptions>]
);
Där:
<TableName>
är namnet på tabellen som data ska matas in i<AccountName>
är ditt ADLS Gen2-kontonamn<Container>
är namnet på containern i ditt lagringskonto där källdata lagras<Folder>
är mappen (eller sökvägen med undermappar) där källdata lagras i containern. Du kan också ange ett filnamn om du pekar direkt på en enda fil.<CopyIntoOptions>
är listan över andra alternativ som du vill ange för COPY INTO-instruktionen.
Mer information och utforska den fullständiga syntaxen för COPY INTO finns i COPY INTO (Transact-SQL).
Fråga efter data på ADLS Gen2 med hjälp av externa tabeller
Med externa tabeller kan användare köra frågor mot data från Azure Data Lake Storage (ADLS) Gen2-konton utan att behöva mata in data först. Användare kan skapa en extern tabell som pekar på filer i en ADLS Gen2-container och köra frågor mot den precis som en vanlig användartabell.
Följande steg beskriver processen för att skapa en ny extern tabell som pekar på data på ADLS Gen2 med hjälp av en hanterad identitet för autentisering.
Skapa nödvändiga databasobjekt
Externa tabeller kräver att följande objekt skapas:
- En databashuvudnyckel som krypterar databasens hemlighet för autentiseringsuppgifter
- En databasomfattande autentiseringsuppgift som använder din arbetsyteidentitet
- En extern datakälla som pekar på källmappen
- Ett externt filformat som definierar formatet för källfilerna
- En extern tabelldefinition som används för frågor
Följ de här stegen genom att använda SQL-redigeraren på Azure Synapse-arbetsytan eller din önskade SQL-klient som är ansluten till din dedikerade SQL-pool. Nu ska vi titta närmare på de här stegen.
Skapa databasens huvudnyckel
Huvudnyckeln för databasen är en symmetrisk nyckel som används för att skydda de privata nycklarna för certifikat och asymmetriska nycklar som finns i databasen och hemligheter i databasomfångsbegränsade autentiseringsuppgifter. Om det redan finns en huvudnyckel i databasen behöver du inte skapa en ny. Ersätt <Secure Password>
med ett säkert lösenord. Det här lösenordet används för att kryptera huvudnyckeln i databasen.
Använd följande T-SQL-kommando för att skapa en huvudnyckel:
-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';
Mer information om huvudnyckeln för databasen finns i CREATE MASTER KEY (Transact-SQL).
Skapa databasens begränsade autentiseringsuppgifter
En databasomfattande autentiseringsuppgifter använder din arbetsyteidentitet och behövs för åtkomst till den externa platsen när den externa tabellen kräver åtkomst till källdata.
Använd följande kommando för att skapa databasens begränsade autentiseringsuppgifter. Ersätt <CredentialName>
med det namn som du vill använda för databasens begränsade autentiseringsuppgifter.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
Mer information om autentiseringsuppgifter med databasomfattning finns i CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Skapa den externa datakällan
Nästa steg är att skapa en extern datakälla som anger var källdata som används av den externa tabellen finns.
Använd följande T-SQL-kommando för att skapa den externa datakällan:
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/',
CREDENTIAL = <CredentialName>
);
Där:
<ExternalDataSourceName>
är det namn som du vill använda för din externa datakälla.<AccountName>
är ditt ADLS Gen2-kontonamn.<Container>
är namnet på containern i ditt lagringskonto där källdata lagras.<Folder>
är mappen (eller sökvägen med undermappar) där källdata lagras i containern. Du kan också ange ett filnamn om du pekar direkt på en enda fil.<Credential>
är namnet på databasens begränsade autentiseringsuppgifter som du skapade tidigare.
Mer information om externa datakällor finns i SKAPA EXTERN DATAKÄLLA (Transact-SQL).
Skapa det externa filformatet
Nästa steg är att skapa det externa filformatet. Den anger den faktiska layouten för de data som refereras till av den externa tabellen.
Använd följande T-SQL-kommando för att skapa det externa filformatet. Ersätt <FileFormatName>
med det namn som du vill använda för ditt externa filformat.
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True
)
);
I det här exemplet justerar du parametrar som FIELD_TERMINATOR
, STRING_DELIMITER
, FIRST_ROW
och andra efter behov i enlighet med dina källdata. Mer formateringsalternativ och mer information om EXTERNAL FILE FORMAT
finns i SKAPA EXTERNT FILFORMAT.
Skapa den externa tabellen
Nu när alla nödvändiga objekt som innehåller metadata för säker åtkomst till externa data har skapats är det dags att skapa den externa tabellen. Använd följande T-SQL-kommando för att skapa den externa tabellen:
-- 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>
);
Där:
<ExternalTableName>
är det namn som du vill använda för den externa tabellen.<Path>
är sökvägen till källdata i förhållande till den plats som anges i den externa datakällan.<ExternalDataSourceName>
är namnet på den externa datakälla som du skapade tidigare.<FileFormatName>
är namnet på det externa filformat som du skapade tidigare.
Se till att justera tabellnamnet och schemat till önskat namn och schemat för data i källfilerna.
Fråga den externa tabellen
Nu skapas alla metadata som krävs för att komma åt den externa tabellen. Om du vill testa den externa tabellen använder du en fråga, till exempel följande T-SQL-exempel för att verifiera ditt arbete:
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
Om allt har konfigurerats korrekt bör du se data från dina källdata som ett resultat av den här frågan.
Mer information och utforska den fullständiga syntaxen för CREATE EXTERNAL TABLE
finns i SKAPA EXTERN TABELL (Transact-SQL).