Partager via


Se connecter au stockage Azure avec une identité managée à partir de PolyBase

S’applique à : SQL Server 2025 (17.x) et versions ultérieures

À compter de SQL Server 2025 (17.x), vous pouvez utiliser l’identité managée pour accéder aux ressources Azure suivantes :

  • Stockage Blob Azure
  • Azure Data Lake

Prerequisites

Pour SQL Server sur des machines virtuelles Azure

Une fois les étapes requises terminées, ajoutez deux nouvelles entrées de Registre. Vous avez besoin de ces entrées de Registre uniquement pour SQL Server sur des machines virtuelles Azure. Pour les instances SQL Server activées par Azure Arc, ces entrées sont créées automatiquement.

Dans le registre, mettez à jour la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQLServer\FederatedAuthentication.

Caution

Une modification incorrecte du Registre peut sérieusement endommager votre système. Avant d'apporter des modifications au Registre, nous vous recommandons de sauvegarder les données importantes qui se trouvent sur l'ordinateur.

Créez les entrées suivantes :

Entrée Valeur
AADAzureStorageEndPoint storage.azure.com
AADDataLakeEndPoint datalake.azure.net

Créer des informations d’identification délimitées à la base de données

Ajoutez des informations d’identification délimitées à la base de données pour l’identité managée.

  1. Autorisez les informations d’identification de base de données limitées au serveur. Exécutez la requête Transact-SQL suivante :

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Créez des informations d’identification délimitées à la base de données. Cet exemple utilise le nom managed_id:

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

Créer une source de données externe

Créez la source de données externe avec les paramètres suivants.

  • Préfixe d’emplacement du connecteur

    • abs
  • Chemin d’accès à l’emplacement

    • abs://<container_name>@<storage_account_name>.blob.core.windows.net/ ou
    • abs://<storage_account_name>.blob.core.windows.net/<container_name>
  • Emplacements pris en charge par produit ou service

    • SQL Server 2025 (17.x) activé par Azure Arc
    • SQL Server 2022 (16.x) : espace de noms hiérarchique pris en charge
  • Authentification

    • Signature d’accès partagé (SAP) ou
    • Identité managée

Interroger un fichier Parquet dans le Stockage Blob Azure

SQL Server 2025 (17.x) prend en charge l’identité managée via Azure Arc. Pour obtenir des instructions, consultez l’identité managée pour SQL Server activée par Azure Arc.

L’exemple suivant interroge un fichier Parquet dans stockage Blob 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
);

Erreurs et solutions

La table externe n’est pas accessible (Erreur 16562)

Vous pouvez rencontrer l’erreur 16562 lors de la tentative d’accès au Stockage Blob Azure ou à Azure Data Lake si vous ne disposez pas des prérequis :

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.

Vérifiez les éléments suivants :

Impossible d’ouvrir le fichier (Erreur 13822)

Vous pouvez rencontrer l’erreur 13822 lorsque vous accédez au Stockage Blob Azure ou à Azure Data Lake, si l’identité managée ne dispose pas d’autorisations sur le compte de stockage, ou que l’accès réseau au stockage est bloqué :

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.

Vérifiez les éléments suivants :

  • L’identité managée dispose-t-elle des autorisations pour le conteneur de stockage ?
  • L’identité managée peut-elle accéder au conteneur de stockage en dehors de SQL Server ?
  • Le fichier est-il verrouillé exclusivement ?