Uwierzytelnianie za pomocą Microsoft Entra ID w bcp

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database w usłudze Microsoft Fabric

Narzędzie do kopiowania zbiorczego (bcp) obsługuje kilka modeli uwierzytelniania Microsoft Entra ID przy połączeniu z usługą Azure SQL Database, usługą Azure SQL Managed Instance, bazą danych SQL w Microsoft Fabric, usługą Azure Synapse Analytics lub SQL Server 2022 (16.x) i nowszymi wersjami.

Aby sprawdzić, czy zainstalowany bcp obsługuje uwierzytelnianie Microsoft Entra, uruchom bcp --help i sprawdź, czy -G znajduje się na liście dostępnych argumentów.

Ograniczenia platformy

Nie wszystkie tryby uwierzytelniania są dostępne na każdej platformie:

Nazwa użytkownika i hasło firmy Microsoft Entra

Podaj -G razem z -U (nazwą użytkownika) i -P (hasłem).

Poniższy przykład eksportuje tabelę bcptest z bazy danych testdb do contoso.database.windows.net pliku c:\last\data1.dat. Zastąp <password> prawidłowym hasłem.

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

Poniższy przykład importuje te same dane:

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 zintegrowany

Podaj -G bez -U lub -P. Bieżące konto systemu Windows (lub tożsamość Protokołu Kerberos w systemie Linux/macOS) musi być sfederowane z Microsoft Entra ID. W poniższych przykładach zastąp <server> nazwą swojego serwera.

Eksportu:

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

Importu:

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

Tożsamość usługi zarządzanej firmy Microsoft Entra

Uwierzytelnij się jako tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika za pośrednictwem skonfigurowanej nazwy DSN. To samo podejście działa zarówno w przypadku bcp in i bcp out.

Ważna

bcp jest ściśle powiązany ze swoim kierowcą. Wersja główna bcp musi odpowiadać wersji głównej sterownika, z którym jest utworzony DSN. Aby określić wersję narzędzia bcp , uruchom polecenie bcp -v.

Skonfiguruj DSN przez administratora źródła danych ODBC:

  1. Naciśnij klawisz systemu Windows na klawiaturze.
  2. Wpisz ODBC i wybierz odpowiednią wersję administratora źródła danych ODBC.
  3. Wybierz kartę User DSN lub System DSN.
  4. Wybierz pozycję Dodaj i postępuj zgodnie z monitami.
  5. Po wyświetleniu monitu o typ uwierzytelniania wybierz pozycję Uwierzytelnianie tożsamości usługi zarządzanej platformy Azure.
  6. W przypadku tożsamości zarządzanej przypisanej przez użytkownika wklej wartość Object (principal) ID tożsamości w polu Identyfikator logowania na karcie uwierzytelnianie.
  7. Postępuj zgodnie z instrukcjami, aby zakończyć konfigurowanie DSN.

Aby zapoznać się z pełną instrukcją, w tym zrzutami ekranu, zobacz Tworzenie i edytowanie DSN w interfejsie użytkownika.

Użyj flagi -D do wskazania, że przekazywana wartość do -S to DSN. Przełączniki -D i -S mogą być wyświetlane w dowolnej kolejności w wierszu polecenia.

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

Token dostępu Microsoft Entra ID

Dotyczy: tylko systemy Linux i macOS. System Windows nie jest obsługiwany.

Program bcp 17.8 lub nowszy w systemach Linux i macOS może uwierzytelniać się przy użyciu tokenu dostępu. W poniższych przykładach użyto interfejsu wiersza polecenia platformy Azure do pobrania tokenu i zapisania go w bezpiecznym pliku tymczasowym.

Ważna

Plik tokena musi być w formacie UTF-16LE bez BOM. Ogranicz uprawnienia do pliku i usuń plik, gdy nie jest już potrzebny, jak pokazano w poniższych przykładach.

Tożsamość zarządzana przypisana przez system

Zastąp <server> nazwą swojego serwera.

  1. Zaloguj się przy użyciu tożsamości zarządzanej:

    az login --identity
    
  2. Pobierz token, zapisz go w bezpiecznym pliku tymczasowym i uruchom narzędzie 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"
    

Tożsamość zarządzana przypisana użytkownikowi

  1. Zaloguj się przy użyciu tożsamości zarządzanej przypisanej przez użytkownika. Zastąp <client_id> prawidłową wartością dla danego środowiska.

    az login --identity --username <client_id>
    
  2. Pobierz token, zapisz go w bezpiecznym pliku tymczasowym i uruchom narzędzie bcp. Zastąp <server> prawidłową wartością dla Twojego środowiska.

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

Interakcyjne rozwiązanie Microsoft Entra

Dotyczy: tylko system Windows. Systemy Linux i macOS nie są obsługiwane.

Interakcyjne uwierzytelnianie firmy Microsoft używa okna dialogowego do uwierzytelniania i obsługuje uwierzytelnianie wieloskładnikowe (MFA). Uwierzytelnianie interakcyjne wymaga programu bcpw wersji 15.0.1000.34 lub nowszej oraz sterownika ODBC 18 dla programu SQL Server (lub sterownika 17.2 lub nowszego).

Podaj tylko -G z -U (nazwą użytkownika). Nie dołączaj -P. Narzędzie bcp pyta o hasło (lub dla kont z włączoną usługą MFA kończy skonfigurowany przepływ uwierzytelniania wieloskładnikowego).

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

W przypadku użytkownika Microsoft Entra, który jest kontem systemu Windows z domeny federacyjnej, dołącz domenę do nazwy użytkownika (na przykład joe@contoso.com):

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

Jeśli użytkownicy-goście w dzierżawie firmy Microsoft Entra są częścią grupy, która ma uprawnienia bazy danych w usłudze Azure SQL Database, użyj aliasu użytkownika-gościa (na przykład keith0@adventure-works.com).

Uzyskiwanie pomocy

Współtworzenie dokumentacji SQL

Czy wiesz, że możesz samodzielnie edytować zawartość SQL? Jeśli to zrobisz, nie tylko pomożesz ulepszyć naszą dokumentację, ale także zostaniesz uznany za współautora strony.

Aby uzyskać więcej informacji, zobacz Edytowanie dokumentacji środowiska Microsoft Learn.