Compartilhar via


Conectar-se ao Armazenamento do Azure com a identidade gerenciada do PolyBase

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores

A partir do SQL Server 2025 (17.x), você pode usar a identidade gerenciada para acessar os seguintes recursos do Azure:

  • Armazenamento de Blobs do Azure
  • Azure Data Lake

Pré-requisitos

  • SQL Server 2025 (17.x)
  • SQL Server habilitado pelo Azure Arc
  • Habilitar a opção de configuração do allow server scoped db credentials servidor
  • Conceda à identidade gerenciada acesso ao recurso de Armazenamento de Blobs do Azure.

Criar credenciais no escopo do banco de dados

Adicione uma credencial com escopo de banco de dados para a identidade gerenciada.

  1. Permitir credenciais de banco de dados no escopo do servidor. Execute a seguinte consulta Transact-SQL:

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Crie uma credencial com escopo de banco de dados. Este exemplo usa o nome managed_id:

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

Criar fonte de dados externa

Crie a fonte de dados externa com as seguintes configurações.

  • Prefixo de local do conector

    • abs
  • Caminho de localização

    • abs://<container_name>@<storage_account_name>.blob.core.windows.net/, ou
    • abs://<storage_account_name>.blob.core.windows.net/<container_name>
  • Locais com suporte por produto/serviço

    • SQL Server 2025 (17.x) habilitado pelo Azure Arc
    • SQL Server 2022 (16.x): namespace hierárquico com suporte
  • Autenticação

    • SAS (assinatura de acesso compartilhado) ou
    • Identidade gerenciada

Consultar um arquivo Parquet no Azure Blob Storage

O SQL Server 2025 (17.x) dá suporte à identidade gerenciada por meio do Azure Arc. Para obter instruções, consulte a identidade gerenciada para SQL Server habilitada pelo Azure Arc.

O exemplo a seguir consulta um arquivo Parquet no Armazenamento de Blobs do 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
);

Erros e soluções

A tabela externa não está acessível (Erro 16562)

Você poderá encontrar o erro 16562 ao tentar acessar o Armazenamento de Blobs do Azure ou o Azure Data Lake se estiver faltando pré-requisitos:

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.

Verifique os seguintes itens:

  • A instância do SQL Server está configurada corretamente para o Azure Arc. Para obter mais informações, consulte a identidade gerenciada do SQL Server habilitada pelo Azure Arc.

  • As entradas necessárias do Registro estão presentes.

  • Verifique se a opção de configuração do allow server scoped db credentials servidor está habilitada.

O arquivo não pode ser aberto (Erro 13822)

Você poderá encontrar o erro 13822 ao acessar o Armazenamento de Blobs do Azure ou o Azure Data Lake se a identidade gerenciada não tiver permissões na conta de armazenamento ou se o acesso à rede ao armazenamento estiver bloqueado.

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.

Verifique os seguintes itens:

  • A identidade gerenciada tem permissões para o contêiner de armazenamento?
  • A identidade gerenciada pode acessar o contêiner de armazenamento fora do SQL Server?
  • O arquivo está bloqueado exclusivamente?