Dela via


Ansluta till Azure Storage med hanterad identitet från PolyBase

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

Från och med förhandsversionen av 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

  • Förhandsversion av 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.

Uppdatera registret

Varning

Felaktig redigering av registret kan allvarligt skada systemet. Innan du gör ändringar i registret rekommenderar vi att du säkerhetskopierar alla värdefulla data på datorn.

Uppdatera registerundernyckeln \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQLServer\FederatedAuthentication. Lägg till följande poster för dina datalagringstyper:

Entry Värde
AADDataLakeEndPoint datalake.azure.net
AADAzureStorageEndpoint storage.azure.com

Registerexempel

I följande exempelskript infogas registernycklarna för en SQL Server 2025 (17.x) förhandsversion kallad SQL25Inst, om den inte redan finns:

# Change to your SQL Server instance.
$yourInstance = "MSSQL17.SQL25Inst"

# Define the registry path
$regPath = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$($yourInstance)\MSSQLServer\FederatedAuthentication"
Write-Host "Path to be updated: $regPath"

# Ensure the path exists
if (-not (Test-Path $regPath)) {
    New-Item -Path $regPath -Force | Out-Null
}

# Define the values to create
$values = @{
    "AADDataLakeEndPoint" = "datalake.azure.net"
    "AADAzureStorageEndpoint" = "storage.azure.com"
}

foreach ($name in $values.Keys) {
    $existing = Get-ItemProperty -Path $regPath -Name $name -ErrorAction SilentlyContinue
    if ($null -eq $existing) {
        New-ItemProperty -Path $regPath -Name $name -Value $values[$name] -PropertyType String -Force
        Write-Host "Created registry value '$name' with '$($values[$name])'"
    }
    else {
        Write-Host "Registry value '$name' already exists. Skipping..."
    }
}

Lägg till dessa nycklar tillsammans med nycklarna som beskrivs i Hanterad identitet (förhandsversion) för SQL Server som aktiveras av Azure Arc.

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

    • Förhandsversionen av SQL Server 2025 (17.x) aktiverad 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

Förhandsversionen av SQL Server 2025 (17.x) stöder hanterad identitet via Azure Arc. Anvisningar finns i Hanterad identitet (förhandsversion) 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?