Autenticar com o Microsoft Entra ID no BCP

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do AzureBanco de Dados SQL do Azure Synapse Analyticsno Microsoft Fabric

A utilidade de cópia em massa (bcp) suporta vários modelos de autenticação Microsoft Entra ID quando se liga ao Azure SQL Database, Azure SQL Managed Instance, base de dados SQL no Microsoft Fabric, Azure Synapse Analytics ou SQL Server 2022 (16.x) e versões posteriores.

Para verificar se o seu bcp instalado suporta autenticação Microsoft Entra, execute bcp --help e verifique se -G aparece na lista de argumentos disponíveis.

Restrições das plataformas

Nem todos os modos de autenticação estão disponíveis em todas as plataformas:

Nome de utilizador e palavra-passe do Microsoft Entra

Forneça -G juntamente com -U (nome de utilizador) e -P (palavra-passe).

O exemplo seguinte exporta a tabela bcptest da base de dados testdb para contoso.database.windows.net o ficheiro c:\last\data1.dat. Substitua <password> por uma senha válida.

bcp bcptest out "c:\last\data1.dat" -c -S contoso.database.windows.net -d testdb -G -U alice@contoso.onmicrosoft.com -P <password>

O exemplo seguinte importa os mesmos dados:

bcp bcptest in "c:\last\data1.dat" -c -S contoso.database.windows.net -d testdb -G -U alice@contoso.onmicrosoft.com -P <password>

Microsoft Entra integrado

Fornecer -G sem -U ou -P. A conta Windows atual (ou identidade Kerberos no Linux/macOS) deve estar federada com o Microsoft Entra ID. Nos exemplos seguintes, substitua <server> pelo nome do seu servidor.

Exportação:

bcp bcptest out "c:\last\data2.dat" -S <server>.database.windows.net -d testdb -G -c

Importação:

bcp bcptest in "c:\last\data2.dat" -S <server>.database.windows.net -d testdb -G -c

Microsoft Entra Managed Service Identity (Identidade de Serviço Gerenciado)

Autenticar-se como uma identidade gerida, atribuída pelo sistema ou pelo utilizador, através de um DSN configurado. A mesma abordagem funciona tanto para bcp in como para bcp out.

Importante

bcp está fortemente acoplado ao seu driver. A versão principal do bcp deve coincidir com a versão principal do driver com que a DSN foi criada. Para determinar a sua versão de BCP , execute bcp -v.

Configure uma DSN através do Administrador da Fonte de Dados ODBC:

  1. Pressiona a tecla Windows no teu teclado.
  2. Digite ODBC e selecione a versão apropriada do ODBC Data Source Administrator.
  3. Selecione o separador DSN do Utilizador ou DSN do Sistema .
  4. Selecione Adicionar e siga as indicações.
  5. Quando solicitado um tipo de autenticação, selecione autenticação Azure Managed Service Identity.
  6. Para uma Identidade Gerida Atribuída pelo Utilizador, cole o Object (principal) ID de dessa identidade na caixa de ID de Login no separador de autenticação.
  7. Continue a seguir as instruções para terminar de configurar a DSN.

Para obter um passo a passo completo, incluindo capturas de tela, consulte Criando e editando DSNs na interface do usuário.

Use o -D flag para indicar que o valor passado -S é uma DSN. Os comutadores -D e -S podem aparecer em qualquer ordem na linha de comandos.

bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb

Token de acesso do Microsoft Entra ID

Aplica-se apenas a: Linux e macOS. O Windows não é suportado.

o bcp 17.8 e versões posteriores em Linux e macOS podem autenticar-se com um token de acesso. Os exemplos seguintes usam a CLI Azure para recuperar o token e escrevê-lo num ficheiro temporário seguro.

Importante

O ficheiro de token deve ser UTF-16LE sem um BOM. Restringa permissões de ficheiros e elimine o ficheiro quando já não for necessário, como mostrado nos exemplos seguintes.

Identidade gerenciada atribuída ao sistema

Substitui <server> pelo nome do teu servidor.

  1. Inicie sessão com a sua identidade gerida:

    az login --identity
    
  2. Recupera o token, escreve-o num ficheiro temporário seguro e executa o bcp:

    # Create a secure temporary file for the token
    tokenFile=$(mktemp)
    chmod 600 "$tokenFile"
    
    # Retrieve the access token and write it as UTF-16LE without BOM
    az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > "$tokenFile"
    
    # Run bcp with the token file
    bcp bcptest out data2.dat -S <server>.database.windows.net -d testdb -G -P "$tokenFile" -c
    
    # Clean up token file
    rm -f "$tokenFile"
    

Identidade gerenciada atribuída pelo usuário

  1. Inicie sessão com a sua identidade gerida atribuída pelo utilizador. Substitua <client_id> por um valor válido para o seu ambiente.

    az login --identity --username <client_id>
    
  2. Recupera o token, escreve-o num ficheiro temporário seguro e executa o bcp. Substitua <server> por um valor válido para o seu ambiente.

    # Create a secure temporary file for the token
    tokenFile=$(mktemp)
    chmod 600 "$tokenFile"
    
    # Retrieve the access token and write it as UTF-16LE without BOM
    az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > "$tokenFile"
    
    # Run bcp with the token file
    bcp bcptest out data2.dat -S <server>.database.windows.net -d testdb -G -P "$tokenFile" -c
    
    # Clean up token file
    rm -f "$tokenFile"
    

Microsoft Entra interactivo

Aplica-se a: apenas para Windows. Linux e macOS não são suportados.

A autenticação interativa Microsoft Entra utiliza um diálogo para autenticar e suporta autenticação multifator (MFA). A autenticação interativa requer a versão BCP15.0.1000.34 ou posterior, e o Driver ODBC 18 para SQL Server (ou driver 17.2 ou posterior).

Apenas fornecer -G com -U (nome de utilizador). Não inclua -P. o bcp solicita a palavra-passe (ou para contas com MFA ativado, completa o fluxo de MFA configurado).

bcp bcptest out "c:\last\data1.dat" -c -S contoso.database.windows.net -d testdb -G -U alice@contoso.onmicrosoft.com

Para um utilizador do Microsoft Entra que seja uma conta Windows de um domínio federado, inclua o domínio no nome de utilizador (por exemplo, joe@contoso.com):

bcp bcptest out "c:\last\data1.dat" -c -S contoso.database.windows.net -d testdb -G -U joe@contoso.com

Se os utilizadores convidados num tenant Microsoft Entra fizerem parte de um grupo que tem permissões de base de dados no Azure SQL Database, use o alias de utilizador convidado (por exemplo, keith0@adventure-works.com).

Obter ajuda

Contribuir para a documentação do SQL

Você sabia que você mesmo pode editar conteúdo SQL? Se o fizer, não só ajudará a melhorar a nossa documentação, como também será creditado como contribuidor da página.

Para obter mais informações, consulte Editar a documentação do Microsoft Learn.