Mengautentikasi dengan ID Microsoft Entra di bcp

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Gudang di Microsoft FabricDatabase SQL di Microsoft Fabric

Utilitas program penyalinan massal (bcp) mendukung beberapa model autentikasi ID Microsoft Entra saat Anda tersambung ke Azure SQL Database, Azure SQL Managed Instance, SQL Database dalam Microsoft Fabric, Azure Synapse Analytics, atau SQL Server 2022 (16.x) dan versi-versi yang lebih baru.

Untuk memeriksa apakah bcp yang diinstal mendukung autentikasi Microsoft Entra, jalankan bcp --help dan verifikasi bahwa -G ada dalam daftar argumen yang tersedia.

Pembatasan platform

Tidak semua mode autentikasi tersedia di setiap platform:

  • Autentikasi interaktif Microsoft Entra hanya didukung di Windows.

  • Autentikasi terintegrasi Microsoft Entra di Linux dan macOS memerlukan Microsoft ODBC Driver 18 untuk SQL Server (driver 17.6.1 atau yang lebih baru jika Anda tidak dapat pindah ke driver 18) dan lingkungan Kerberos yang dikonfigurasi dengan benar.

  • Autentikasi dengan file token akses (-P <token_file>) hanya didukung di Linux dan macOS.

  • bcp saat ini tersedia dalam pratinjau di Warehouse di Microsoft Fabric.

  • bcp tidak dapat mengimpor data di titik akhir analitik SQL di Microsoft Fabric.

Nama pengguna dan kata sandi Microsoft Entra

Sediakan -G bersama dengan -U (nama pengguna) dan -P (kata sandi).

Contoh berikut mengekspor tabel bcptest dari database testdbcontoso.database.windows.net ke file c:\last\data1.dat. Ganti <password> dengan kata sandi yang valid.

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

Contoh berikut mengimpor data yang sama:

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 terintegrasi

Sediakan -G tanpa -U atau -P. Akun Windows saat ini (atau identitas Kerberos di Linux/macOS) harus digabungkan dengan ID Microsoft Entra. Dalam contoh berikut, ganti <server> dengan nama server Anda.

Ekspor:

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

Impor:

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

Identitas Layanan Terkelola Microsoft Entra

Autentikasi sebagai identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna melalui DSN yang dikonfigurasi. Pendekatan yang sama berfungsi untuk bcp in dan bcp out.

Important

bcp digabungkan erat dengan pengemudinya. Versi utama bcp harus cocok dengan versi utama driver yang digunakan untuk membuat DSN. Untuk menentukan versi bcp Anda, jalankan bcp -v.

Konfigurasikan DSN melalui Administrator Sumber Data ODBC:

  1. Tekan tombol Windows pada keyboard Anda.
  2. Ketik ODBC dan pilih versi Administrator Sumber Data ODBC yang sesuai.
  3. Pilih tab DSN Pengguna atau DSN Sistem .
  4. Pilih Tambahkan dan ikuti perintah.
  5. Saat dimintai jenis autentikasi, pilih Autentikasi Identitas Layanan Terkelola Azure.
  6. Untuk Identitas Terkelola yang Ditetapkan Pengguna, tempelkan Object (principal) ID identitas ke dalam kotak ID Masuk pada tab autentikasi.
  7. Lanjutkan mengikuti perintah untuk menyelesaikan konfigurasi DSN.

Untuk panduan lengkap termasuk cuplikan layar, lihat Membuat dan mengedit DSN di UI.

Gunakan -D flag untuk menunjukkan bahwa nilai yang diteruskan ke -S adalah DSN. Sakelar -D dan -S dapat muncul dalam urutan apa pun pada baris perintah.

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

Token akses ID Microsoft Entra

Berlaku untuk: Linux dan macOS saja. Windows tidak didukung.

bcp 17.8 dan versi yang lebih baru di Linux dan macOS dapat mengautentikasi dengan token akses. Contoh berikut menggunakan Azure CLI untuk mengambil token dan menulisnya ke file sementara yang aman.

Important

File token harus UTF-16LE tanpa BOM. Batasi izin file dan hapus file saat tidak lagi diperlukan, seperti yang ditunjukkan dalam contoh berikut.

Identitas terkelola yang diberikan oleh sistem

Ganti <server> dengan nama server Anda.

  1. Masuk dengan identitas terkelola Anda:

    az login --identity
    
  2. Ambil token, tulis ke file sementara yang aman, dan jalankan 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"
    

Identitas terkelola yang ditetapkan pengguna

  1. Masuk menggunakan identitas terkelola yang ditetapkan oleh pengguna. Ganti <client_id> dengan nilai yang valid untuk lingkungan Anda.

    az login --identity --username <client_id>
    
  2. Ambil token, tulis ke file sementara yang aman, dan jalankan bcp. Ganti <server> dengan nilai yang valid untuk lingkungan Anda.

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

Berlaku untuk: Hanya Windows. Tidak mendukung Linux dan macOS.

Autentikasi interaktif Microsoft Entra menggunakan dialog untuk mengautentikasi, dan mendukung autentikasi multifaktor (MFA). Autentikasi interaktif memerlukan bcpversi 15.0.1000.34 atau yang lebih baru, dan ODBC Driver 18 untuk SQL Server (atau driver 17.2 atau yang lebih baru).

Sediakan -G dengan -U (nama pengguna) saja. Jangan sertakan -P. bcp meminta kata sandi (atau untuk akun dengan MFA diaktifkan, menyelesaikan alur MFA yang dikonfigurasi).

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

Untuk pengguna Microsoft Entra yang merupakan akun Windows dari domain federasi, sertakan domain dalam nama pengguna (misalnya, joe@contoso.com):

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

Jika pengguna tamu di penyewa Microsoft Entra adalah bagian dari grup yang memiliki izin database di Azure SQL Database, gunakan alias pengguna tamu (misalnya, keith0@adventure-works.com).

Dapatkan bantuan

Berkontribusi pada dokumentasi SQL

Tahukah Anda bahwa Anda dapat mengedit konten SQL sendiri? Jika Anda melakukannya, Anda tidak hanya membantu meningkatkan dokumentasi kami, tetapi Anda juga dikreditkan sebagai kontributor ke halaman.

Untuk informasi selengkapnya, lihat Mengedit dokumentasi Microsoft Learn.