Partilhar via


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

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

A partir do SQL Server 2025 (17.x), pode usar a identidade gerida para aceder aos seguintes recursos Azure:

  • Armazenamento de Blobs do Azure
  • Azure Data Lake

Pré-requisitos

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

Criar credenciais com escopo no banco de dados

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

  1. Permitir credenciais de banco de dados com escopo de servidor. Executar a seguinte consulta Transact-SQL:

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Crie uma credencial com escopo específico a um 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 localização 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>
  • Localizações suportadas por produto/serviço

    • SQL Server 2025 (17.x) ativado pelo Azure Arc
    • SQL Server 2022 (16.x): namespace hierárquico suportado
  • Authentication

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

Consultar um ficheiro Parquet no Armazenamento de Blobs do Azure

O SQL Server 2025 (17.x) suporta identidade gerida através do Azure Arc. Para instruções, consulte Identidade gerida para SQL Server ativada 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ê pode encontrar o erro 16562 ao tentar acessar o Armazenamento de Blobs do Azure ou o Azure Data Lake se faltarem os 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.

Confira os seguintes itens:

  • A instância do SQL Server está devidamente configurada para Azure Arc. Para mais informações, consulte Identidade gerida para SQL Server ativada pelo Azure Arc.

  • As entradas de registo necessárias existem.

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

Não é possível abrir o ficheiro (Erro 13822)

Você pode 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 da 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.

Confira 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 ficheiro está bloqueado exclusivamente?