Condividi tramite


Connettersi all'archiviazione di Azure utilizzando un'identità gestita tramite PolyBase

Si applica a: SQL Server 2025 (17.x) e versioni successive

A partire da SQL Server 2025 (17.x), è possibile usare l'identità gestita per accedere alle risorse di Azure seguenti:

  • Blob Storage di Azure
  • Azure Data Lake

Prerequisiti

  • SQL Server 2025 (17.x)
  • SQL Server abilitato da Azure Arc.
  • Abilitare l'opzione di configurazione del allow server scoped db credentials server
  • Concedere all'identità gestita l'accesso alla risorsa di archiviazione BLOB di Azure.

Creare credenziali con ambito database

Aggiungere credenziali con ambito database per l'identità gestita.

  1. Consentire le credenziali del database con ambito server. Eseguire la query di Transact-SQL seguente:

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Creare credenziali con ambito database. In questo esempio viene usato il nome managed_id:

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

Creare un'origine dati esterna

Creare l'origine dati esterna con le impostazioni seguenti.

  • Prefisso della posizione del connettore

    • abs
  • Percorso percorso

    • abs://<container_name>@<storage_account_name>.blob.core.windows.net/ o
    • abs://<storage_account_name>.blob.core.windows.net/<container_name>
  • Località supportate per prodotto/servizio

    • SQL Server 2025 (17.x) abilitato da Azure Arc
    • SQL Server 2022 (16.x): spazio dei nomi gerarchico supportato
  • Autenticazione

    • Firma di accesso condiviso o
    • Identità gestita

Eseguire query su un file Parquet in Archiviazione BLOB di Azure

SQL Server 2025 (17.x) supporta l'identità gestita tramite Azure Arc. Per istruzioni, vedere Identità gestita per SQL Server abilitata da Azure Arc.

L'esempio seguente esegue una query su un file Parquet nell'archiviazione blob di Azure.

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
);

Errori e soluzioni

Tabella esterna non accessibile (Errore 16562)

È possibile che si verifichi l'errore 16562 quando si tenta di accedere ad Archiviazione BLOB di Azure o Azure Data Lake se mancano i prerequisiti:

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.

Controllare gli elementi seguenti:

  • L'istanza di SQL Server è configurata correttamente per Azure Arc. Per altre informazioni, vedere Identità gestita per SQL Server abilitata da Azure Arc.

  • Le voci del Registro di sistema necessarie esistono.

  • Verificare che l'opzione di configurazione del allow server scoped db credentials server sia abilitata.

Impossibile aprire il file (Errore 13822)

È possibile che si verifichi l'errore 13822 quando si accede ad Azure Blob Storage o Azure Data Lake se l'identità gestita non dispone delle autorizzazioni per l'account di archiviazione oppure l'accesso alla rete per lo storage è bloccato.

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.

Controllare gli elementi seguenti:

  • L'identità gestita dispone delle autorizzazioni per il contenitore di archiviazione?
  • L'identità gestita può accedere al contenitore di archiviazione all'esterno di SQL Server?
  • Il file è bloccato esclusivamente?