Поделиться через


Подключение к Azure Storage с использованием управляемой идентичности из PolyBase

Применимо к: SQL Server 2025 (17.x) и более поздних версий

Начиная с SQL Server 2025 (17.x), можно использовать управляемое удостоверение для доступа к следующим ресурсам Azure:

  • Azure Blob-хранилище
  • Azure Data Lake

Предпосылки

  • SQL Server 2025 (17.x)
  • SQL Server, активированный с помощью Azure Arc
  • allow server scoped db credentials Включение параметра конфигурации сервера
  • Предоставьте управляемому удостоверению доступ к объектному хранилищу Azure.

Создание учетных данных для области базы данных

Добавьте учетные данные, ограниченные областью базы данных, для управляемой идентификации.

  1. Разрешить учетные данные базы данных, привязанные к серверу. Выполните следующий запрос Transact-SQL:

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Создайте учетные данные, ограниченные областью действия базы данных. В этом примере используется имя managed_id:

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

Создание внешнего источника данных

Создайте внешний источник данных со следующими параметрами.

  • Префикс расположения соединителя

    • abs
  • Путь к расположению

    • abs://<container_name>@<storage_account_name>.blob.core.windows.net/, или
    • abs://<storage_account_name>.blob.core.windows.net/<container_name>
  • Поддерживаемые местоположения для продукта или услуги

    • SQL Server 2025 (17.x), работающий под управлением Azure Arc
    • SQL Server 2022 (16.x): поддерживаемое иерархическое пространство имен
  • Аутентификация

    • Общий ключ доступа (SAS) или
    • Манажируемая идентичность

Запрос к файлу Parquet в хранилище BLOB-объектов Azure

SQL Server 2025 (17.x) поддерживает управляемое удостоверение с помощью Azure Arc. Инструкции см. в статье Об управляемом удостоверении для SQL Server, включенном Azure Arc.

В следующем примере выполняется запрос к файлу Parquet в 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
);

Ошибки и решения

Внешняя таблица недоступна (ошибка 16562)

При попытке получить доступ к хранилищу BLOB-объектов Azure или Azure Data Lake может возникнуть ошибка 16562, если отсутствуют предварительные требования:

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.

Проверьте следующие элементы:

Невозможно открыть файл (ошибка 13822)

При доступе к хранилищу BLOB-объектов Azure или Azure Data Lake может возникнуть ошибка 13822, если управляемое удостоверение не имеет разрешений для учетной записи хранилища или сетевой доступ к хранилищу заблокирован.

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.

Проверьте следующие элементы:

  • Имеет ли управляемое удостоверение доступ к контейнеру в хранилище?
  • Может ли управляемое удостоверение получить доступ к контейнеру хранилища за пределами SQL Server?
  • Заблокирован ли файл исключительно?