Autentisera med Microsoft Entra-ID i bcp

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-databas i Microsoft Fabric

Verktyget för masskopieringsprogram (bcp) stöder flera Microsoft Entra ID-autentiseringsmodeller när du ansluter till Azure SQL Database, Azure SQL Managed Instance, SQL Database i Microsoft Fabric, Azure Synapse Analytics eller SQL Server 2022 (16.x) och senare versioner.

Om du vill kontrollera om din installerade bcp stöder Microsoft Entra-autentisering kör bcp --help du och kontrollerar att det -G visas i listan över tillgängliga argument.

Plattformsbegränsningar

Alla autentiseringslägen är inte tillgängliga på alla plattformar:

  • Interaktiv Microsoft Entra-autentisering stöds endast i Windows.

  • Microsoft Entra-integrerad autentisering på Linux och macOS kräver Microsoft ODBC Driver 18 för SQL Server (drivrutin 17.6.1 eller senare om du inte kan flytta till drivrutin 18) och en korrekt konfigurerad Kerberos-miljö.

  • Autentisering med en åtkomsttokenfil (-P <token_file>) stöds endast på Linux och macOS.

Användarnamn och lösenord för Microsoft Entra

Ange -G tillsammans med -U (användarnamn) och -P (lösenord).

I följande exempel exporteras tabellen bcptest från databasen testdbcontoso.database.windows.net till filen c:\last\data1.dat. Ersätt <password> med ett giltigt lösenord.

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

I följande exempel importeras samma data:

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 integrerat

Ange -G utan -U eller -P. Det aktuella Windows-kontot (eller Kerberos-identiteten på Linux/macOS) måste federeras med Microsoft Entra-ID. I följande exempel ersätter du <server> med servernamnet.

Exportera:

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

Importera:

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

Microsoft Entra Managed Service Identity

Autentisera som antingen en systemtilldelad eller användartilldelad hanterad identitet via ett konfigurerat DSN. Samma metod fungerar för både bcp in och bcp out.

Important

bcp är nära kopplad till sin drivrutin. Huvudversionen av bcp måste matcha huvudversionen av drivrutinen som DSN skapas med. För att fastställa din bcp-version kör du bcp -v.

Konfigurera ett DSN via ODBC-datakälladministratören:

  1. Tryck på Windows-tangenten på tangentbordet.
  2. Skriv ODBC och välj lämplig version av ODBC-datakälladministratören.
  3. Välj antingen fliken Användar-DSN eller System-DSN .
  4. Välj Lägg till och följ anvisningarna.
  5. När du tillfrågas om en autentiseringstyp väljer du Azure Managed Service Identity-autentisering.
  6. För en användartilldelad hanterad identitet klistrar du in identiteten Object (principal) ID i rutan Inloggnings-ID på fliken autentisering.
  7. Fortsätt att följa anvisningarna för att slutföra konfigurationen av DSN.

En fullständig genomgång, inklusive skärmbilder, finns i Skapa och redigera DSN i användargränssnittet.

-D Använd flaggan för att ange att värdet som skickas till -S är ett DSN. Omkopplarna -D och -S kan förekomma i valfri ordning på kommandoraden.

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

Åtkomsttoken för Microsoft Entra-ID

Gäller endast för: Linux och macOS. Windows stöds inte.

bcp 17.8 och senare versioner på Linux och macOS kan autentisera med en åtkomsttoken. I följande exempel används Azure CLI för att hämta token och skriva den till en säker temporär fil.

Important

Tokenfilen måste vara UTF-16LE utan bom. Begränsa filbehörigheter och ta bort filen när den inte längre behövs, som du ser i följande exempel.

Systemtilldelad hanterad identitet

Ersätt <server> med servernamnet.

  1. Logga in med din hanterade identitet:

    az login --identity
    
  2. Hämta token, skriv den till en säker temporär fil och kör 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"
    

Användartilldelad hanterad identitet

  1. Logga in med din användartilldelade hanterade identitet. Ersätt <client_id> med ett giltigt värde för din miljö.

    az login --identity --username <client_id>
    
  2. Hämta token, skriv den till en säker temporär fil och kör bcp. Ersätt <server> med ett giltigt värde för din miljö.

    # 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 interaktiv

Gäller endast för: Windows. Linux och macOS stöds inte.

Interaktiv Microsoft Entra-autentisering använder en dialogruta för att autentisera och stöder multifaktorautentisering (MFA). Interaktiv autentisering kräver bcpversion 15.0.1000.34 eller senare och ODBC Driver 18 för SQL Server (eller drivrutin 17.2 eller senare).

Ange endast -G med -U (användarnamn). Inkludera inte -P. bcp frågar efter lösenordet (eller för konton med MFA aktiverat slutför det konfigurerade MFA-flödet).

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

För en Microsoft Entra-användare som är ett Windows-konto från en federerad domän inkluderar du domänen i användarnamnet (till exempel joe@contoso.com):

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

Om gästanvändare i en Microsoft Entra-klientorganisation ingår i en grupp som har databasbehörigheter i Azure SQL Database använder du gästanvändaraliaset (till exempel keith0@adventure-works.com).

Få hjälp

Bidra till SQL-dokumentation

Visste du att du kan redigera SQL-innehåll själv? Om du gör det hjälper du inte bara till att förbättra vår dokumentation, utan du får även kredit som deltagare på sidan.

Mer information finns i Redigera Microsoft Learn-dokumentation.