Delen via


Verbinding maken met Azure Storage met een beheerde identiteit vanuit PolyBase

Van toepassing op: SQL Server 2025 (17.x) Preview en latere versies

Vanaf SQL Server 2025 (17.x) Preview kunt u beheerde identiteit gebruiken voor toegang tot de volgende Azure-resources:

  • Azure Blob Storage (opslagdienst van Azure)
  • Azure Data Lake

Vereiste voorwaarden

  • SQL Server 2025 (17.x) Preview
  • SQL Server ingeschakeld door Azure Arc
  • allow server scoped db credentials De serverconfiguratieoptie inschakelen
  • Geef de beheerde identiteit toegang tot de Azure Blob Storage-resource.

Het register bijwerken

Waarschuwing

Het onjuist bewerken van het register kan uw systeem ernstig beschadigen. Voordat u wijzigingen aanbrengt in het register, raden we u aan een back-up te maken van waardegegevens op de computer.

Werk de registersubsleutel \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQLServer\FederatedAuthenticationbij. Voeg de volgende vermeldingen toe voor uw gegevensopslagtypen:

Entry Waarde
AADDataLakeEndPoint datalake.azure.net
AADAzureStorageEndpoint storage.azure.com

Registervoorbeeld

In het volgende voorbeeldscript worden de registersleutels ingevoegd voor een SQL Server 2025 (17.x) Preview-exemplaar met de naam SQL25Inst, als dit nog niet bestaat:

# 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..."
    }
}

Voeg deze sleutels toe, samen met de sleutels die worden beschreven in beheerde identiteit (preview) voor SQL Server die is ingeschakeld door Azure Arc.

Databasereferenties maken

Voeg een databasereferentie toe voor beheerde identiteit.

  1. Sta databasereferenties met serverbereik toe. Voer de volgende Transact-SQL-query uit:

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Maak een databasereferentie binnen het bereik. In dit voorbeeld wordt de naam managed_idgebruikt:

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

Externe gegevensbron maken

Maak de externe gegevensbron met de volgende instellingen.

  • Voorvoegsel voor connectorlocatie

    • abs
  • Locatiepad

    • abs://<container_name>@<storage_account_name>.blob.core.windows.net/of,
    • abs://<storage_account_name>.blob.core.windows.net/<container_name>
  • Ondersteunde locaties per product/service

    • SQL Server 2025 (17.x) Preview ingeschakeld door Azure Arc
    • SQL Server 2022 (16.x): HiĆ«rarchische naamruimte ondersteund
  • Authentication

    • Shared Access Signature (SAS), ofwel
    • Beheerde identiteit

Query's uitvoeren op een Parquet-bestand in Azure Blob Storage

SQL Server 2025 (17.x) Preview biedt ondersteuning voor beheerde identiteiten via Azure Arc. Zie Beheerde identiteit (preview) voor SQL Server die is ingeschakeld door Azure Arc voor instructies.

In het volgende voorbeeld wordt een Query uitgevoerd op een Parquet-bestand in 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
);

Fouten en oplossingen

Externe tabel is niet toegankelijk (fout 16562)

U kunt fout 16562 tegenkomen bij het openen van Azure Blob Storage of Azure Data Lake als u niet aan de vereisten voldoet.

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.

Controleer de volgende items:

Bestand kan niet worden geopend (fout 13822)

Er kan fout 13822 optreden wanneer u toegang krijgt tot Azure Blob Storage of Azure Data Lake als de beheerde identiteit geen machtigingen voor het opslagaccount heeft of als de netwerktoegang tot opslag wordt geblokkeerd.

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.

Controleer de volgende items:

  • Heeft de beheerde identiteit machtigingen voor de opslagcontainer?
  • Heeft de beheerde identiteit toegang tot de opslagcontainer buiten SQL Server?
  • Is het bestand exclusief vergrendeld?