Ansluta till Azure Storage med hanterad identitet från PolyBase

Gäller för: SQL Server 2025 (17.x) och senare versioner

Från och med SQL Server 2025 (17.x) kan du använda hanterad identitet för att komma åt följande Azure-resurser:

  • Azure Blob Storage-lagringstjänst
  • Azure Data Lake

Förutsättningar

  • SQL Server 2025 (17.x)
  • SQL Server aktiverat av Azure Arc
  • allow server scoped db credentials Aktivera serverkonfigurationsalternativet
  • Ge den hanterade identiteten åtkomst till Azure Blob Storage-resursen.

Skapa databasomfattade behörighetsuppgifter

Lägg till en databasomfattande autentiseringsuppgift för hanterad identitet.

  1. Tillåt databasuppgifter som är begränsade till servern. Kör följande Transact-SQL fråga:

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Skapa en databasomfångsbegränsad autentiseringsuppgift. I det här exemplet används namnet managed_id:

    CREATE DATABASE SCOPED CREDENTIAL [managed_id]
    WITH IDENTITY = 'Managed Identity';
    

Skapa en extern datakälla

Skapa den externa datakällan med följande inställningar.

  • Anslutningsplats prefix

    • abs
  • Plats och sökväg

    • abs://<container_name>@<storage_account_name>.blob.core.windows.net/, eller
    • abs://<storage_account_name>.blob.core.windows.net/<container_name>
  • Platser som stöds efter produkt/tjänst

    • SQL Server 2025 (17.x) aktiverat av Azure Arc
    • SQL Server 2022 (16.x): Hierarkiskt namnområde stöds
  • autentisering

    • Signatur för delad åtkomst (SAS) eller
    • Hanterad identitet

Utföra en fråga efter en Parquet-fil på Azure Blob Storage

SQL Server 2025 (17.x) stöder hanterad identitet via Azure Arc. Anvisningar finns i Hanterad identitet för SQL Server som aktiveras av Azure Arc.

Följande exempel frågar en Parquet-fil i Azure Blob Storage:

EXECUTE sp_configure 'allow server scoped db credentials', 1;
RECONFIGURE;
GO

CREATE DATABASE SCOPED CREDENTIAL [managed_id]
WITH IDENTITY = 'Managed Identity';

CREATE EXTERNAL DATA SOURCE [my_external_data_source]
WITH (
    LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
    CREDENTIAL = managed_id
);

Fel och lösningar

Extern tabell är inte tillgänglig (fel 16562)

Du kan stöta på fel 16562 när du försöker komma åt Azure Blob Storage eller Azure Data Lake om du saknar förutsättningar:

Msg 16562, Level 16, State 1, Line 79
External table <name> is not accessible because location does not exist or it is used by another process.

Kontrollera följande:

Det går inte att öppna filen (fel 13822)

Du kan stöta på fel 13822 när du får åtkomst till Azure Blob Storage eller Azure Data Lake om den hanterade identiteten saknar behörighet för lagringskontot eller om nätverksåtkomsten till lagring blockeras.

Msg 13822, Level 16, State 1, Line 9
File <file> cannot be opened because it does not exist or it is used by another process.

Kontrollera följande:

  • Har den hanterade identiteten behörighet till lagringscontainern?
  • Kan den hanterade identiteten komma åt lagringscontainern utanför SQL Server?
  • Är filen låst exklusivt?