Autenticar con Microsoft Entra ID en bcp

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsBase de datos de Azure SQL en Microsoft Fabric

La utilidad de programa de copia masiva (bcp) admite varios modelos de autenticación de Microsoft Entra ID cuando se conecta a Azure SQL Database, Azure SQL Managed Instance, SQL Database en Microsoft Fabric, Azure Synapse Analytics o SQL Server 2022 (16.x) y versiones posteriores.

Para comprobar si el bcp instalado admite la autenticación de Microsoft Entra, ejecute bcp --help y compruebe que -G aparece en la lista de argumentos disponibles.

Restricciones de plataforma

No todos los modos de autenticación están disponibles en todas las plataformas:

  • La autenticación interactiva de Microsoft Entra solo se admite en Windows.

  • La autenticación integrada de Microsoft Entra en Linux y macOS requiere Microsoft ODBC Driver 18 para SQL Server (controlador 17.6.1 o posterior si no se puede mover al controlador 18) y un entorno Kerberos configurado correctamente.

  • La autenticación con un archivo de token de acceso (-P <token_file>) solo se admite en Linux y macOS.

Nombre de usuario y contraseña de Microsoft Entra

Proporcione -G junto con -U (nombre de usuario) y -P (contraseña).

En el ejemplo siguiente se exporta la tabla bcptest de la base de datos testdb en contoso.database.windows.net al archivo c:\last\data1.dat. Reemplace <password> por una contraseña 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>

En el ejemplo siguiente se importan los mismos datos:

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

Proporcione -G sin -U o -P. La cuenta actual de Windows (o la identidad Kerberos en Linux/macOS) debe estar federada con Microsoft Entra ID. En los ejemplos siguientes, reemplace por <server> el nombre del servidor.

Exportar:

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

Importar:

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

Microsoft Entra Managed Service Identity (Identidad de Servicio Gestionado)

Autentíquese como una identidad administrada asignada por el sistema o asignada por el usuario a través de un DSN configurado. El mismo enfoque funciona tanto para bcp in como para bcp out.

Importante

bcp está estrechamente acoplado a su controlador. La versión principal de bcp debe coincidir con la versión principal del controlador con la que se crea el DSN. Para determinar la versión de bcp , ejecute bcp -v.

Configurar un DSN a través del Administrador de Orígenes de Datos ODBC:

  1. Presione la tecla Windows en el teclado.
  2. Escriba ODBC y seleccione la versión adecuada del administrador de orígenes de datos ODBC.
  3. Seleccione la pestaña DSN de usuario o DSN del sistema .
  4. Seleccione Agregar y siga las indicaciones.
  5. Cuando se le solicite un tipo de autenticación, seleccione Autenticación de Azure Managed Service Identity.
  6. Para una identidad administrada asignada por el usuario, pegue la Object (principal) ID de la identidad en el cuadro ID de inicio de sesión en la pestaña de autenticación.
  7. Siga las indicaciones para terminar de configurar el DSN.

Para ver un tutorial completo, incluidas las capturas de pantalla, consulte Creación y edición de DSN en la UI.

Use la -D marca para indicar que el valor pasado a -S es un DSN. Los -D y -S interruptores pueden aparecer en cualquier orden en la línea de comandos.

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

Token de acceso de Microsoft Entra ID

Se aplica solo a: Linux y macOS. Windows no es compatible.

bcp 17.8 y versiones posteriores en Linux y macOS pueden autenticarse con un token de acceso. En los ejemplos siguientes se usa la CLI de Azure para recuperar el token y escribirlo en un archivo temporal seguro.

Importante

El archivo de token debe ser UTF-16LE sin un BOM. Restrinja los permisos de archivo y elimine el archivo cuando ya no sea necesario, como se muestra en los ejemplos siguientes.

Identidad administrada asignada por el sistema

Reemplace por <server> el nombre del servidor.

  1. Inicie sesión con la identidad administrada:

    az login --identity
    
  2. Recupere el token, escríbalo en un archivo temporal seguro y ejecute 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"
    

Identidad administrada asignada por el usuario

  1. Inicie sesión con la identidad administrada asignada por el usuario. Reemplace <client_id> por un valor válido para su entorno.

    az login --identity --username <client_id>
    
  2. Recupere el token, escríbalo en un archivo temporal seguro y ejecute bcp. Reemplace <server> por un valor válido para su entorno.

    # 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

Se aplica a: Solo Windows. No se admiten Linux ni macOS.

La autenticación interactiva de Microsoft Entra usa un cuadro de diálogo para autenticarse y admite la autenticación multifactor (MFA). La autenticación interactiva requiere bcpversión 15.0.1000.34 o posterior, y ODBC Driver 18 for SQL Server (o driver 17.2 o posterior).

Proporcione solo -G con -U (nombre de usuario). No incluya -P. bcp solicita la contraseña (o para las cuentas con MFA habilitada, completa el flujo 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 un usuario de Microsoft Entra que sea una cuenta de Windows de un dominio federado, incluya el dominio en el nombre de usuario (por ejemplo, joe@contoso.com):

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

Si los usuarios invitados de un inquilino de Microsoft Entra forman parte de un grupo que tiene permisos de base de datos en Azure SQL Database, use el alias de usuario invitado (por ejemplo, keith0@adventure-works.com).

Obtener ayuda

Contribuya a la documentación de SQL

¿Sabía que puede editar el contenido de SQL usted mismo? Si lo hace, no solo contribuirá a mejorar la documentación, sino que también se le reconocerá como colaborador de la página.

Para obtener más información, consulte Editar documentación de Microsoft Learn.