Authentifizieren mit Microsoft Entra ID in bcp

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-Datenbank in Microsoft Fabric

Das Massenkopierprogramm (bcp) unterstützt mehrere Authentifizierungsmodelle von Microsoft Entra ID, wenn Sie eine Verbindung mit Azure SQL-Datenbank, Azure SQL Managed Instance, SQL-Datenbank in Microsoft Fabric, Azure Synapse Analytics oder SQL Server 2022 (16.x) sowie spätere Versionen herstellen.

Um zu überprüfen, ob Ihr installierter bcp die Microsoft Entra-Authentifizierung unterstützt, führen Sie bcp --help aus und überprüfen Sie, ob -G in der Liste der verfügbaren Argumente erscheint.

Plattformeinschränkungen

Nicht alle Authentifizierungsmodi sind auf jeder Plattform verfügbar:

  • Die interaktive Microsoft Entra-Authentifizierung wird nur unter Windows unterstützt.

  • Die integrierte Microsoft Entra-Authentifizierung unter Linux und macOS erfordert Microsoft ODBC-Treiber 18 für SQL Server (Treiber 17.6.1 oder höher, wenn Sie nicht zu Treiber 18 wechseln können) und eine ordnungsgemäß konfigurierte Kerberos-Umgebung.

  • Die Authentifizierung mit einer Zugriffstokendatei (-P <token_file>) wird nur unter Linux und macOS unterstützt.

Microsoft Entra-Authentifizierung mit Benutzername und Kennwort

Geben Sie -G zusammen mit -U (Benutzername) und -P (Kennwort) an.

Im folgenden Beispiel wird die Tabelle aus der Datenbank bcptesttestdbcontoso.database.windows.net in die Datei c:\last\data1.datexportiert. Ersetzen Sie <password> durch ein gültiges Kennwort.

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

Im folgenden Beispiel werden dieselben Daten importiert:

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 integriert

Bereitstellen -G ohne -U oder -P. Das aktuelle Windows-Konto (oder die Kerberos-Identität unter Linux/macOS) muss mit der Microsoft Entra-ID verbunden sein. Ersetzen Sie in den folgenden Beispielen <server> durch Ihren Servernamen.

Exportieren:

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

Importieren:

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

Microsoft Entra Managed Service Identity

Authentifizieren Sie sich über einen konfigurierten DSN entweder als eine vom System zugewiesene oder eine vom Benutzer zugewiesene verwaltete Identität. Derselbe Ansatz funktioniert sowohl für bcp in als auch für bcp out.

Important

bcp ist eng mit seinem Treiber gekoppelt. Die Hauptversion von bcp muss mit der Hauptversion des Treibers übereinstimmen, mit dem der DSN erstellt wird. Um Ihre Version von bcp zu ermitteln, führen Sie bcp -v aus.

Konfigurieren Sie einen DSN über den ODBC-Datenquellenadministrator:

  1. Drücken Sie die Windows-TASTE auf der Tastatur.
  2. Geben Sie ODBC die entsprechende Version des ODBC-Datenquellenadministrators ein, und wählen Sie sie aus.
  3. Wählen Sie entweder die Registerkarte "Benutzer-DSN " oder " System-DSN " aus.
  4. Wählen Sie "Hinzufügen" aus, und folgen Sie den Anweisungen.
  5. Wenn Sie nach einem Authentifizierungstyp gefragt werden, wählen Sie die Azure Managed Service Identity-Authentifizierung aus.
  6. Fügen Sie für eine vom Benutzer zugewiesene verwaltete Identität die Object (principal) ID-Identität in das Feld Anmelde-ID auf der Registerkarte Authentifizierung ein.
  7. Folgen Sie den Anweisungen, um die Konfiguration des DSN abzuschließen.

Eine vollständige exemplarische Vorgehensweise, einschließlich Screenshots, finden Sie unter Erstellen und Bearbeiten von DSNs in der Benutzeroberfläche.

Verwenden Sie das -D-Flag, um anzugeben, dass der -S-Wert ein übergebener DSN ist. Die Schalter -D und -S können in beliebiger Reihenfolge in der Befehlszeile auftreten.

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

Microsoft Entra ID-Zugriffstoken

Gilt nur für: Linux und macOS. Windows wird nicht unterstützt.

bcp 17.8 und höhere Versionen unter Linux und macOS können sich mit einem Zugriffstoken authentifizieren. In den folgenden Beispielen wird die Azure CLI verwendet, um das Token abzurufen und in eine sichere temporäre Datei zu schreiben.

Important

Die Tokendatei muss UTF-16LE ohne BOM sein. Beschränken Sie Die Dateiberechtigungen, und löschen Sie die Datei, wenn sie nicht mehr benötigt wird, wie in den folgenden Beispielen gezeigt.

Vom System zugewiesene verwaltete Identität

Ersetzen Sie <server> durch den Servernamen.

  1. Melden Sie sich mit Ihrer verwalteten Identität an:

    az login --identity
    
  2. Rufen Sie das Token ab, schreiben Sie es in eine sichere temporäre Datei, und führen Sie bcp aus:

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

Vom Benutzer zugewiesene verwaltete Identität

  1. Melden Sie sich mit Ihrer vom Benutzer zugewiesenen verwalteten Identität an. Ersetzen Sie <client_id> mit einem gültigen Wert für Ihre Umgebung.

    az login --identity --username <client_id>
    
  2. Rufen Sie das Token ab, schreiben Sie es in eine sichere temporäre Datei, und führen Sie bcp aus. Ersetzen Sie <server> durch einen gültigen Wert für Ihre Umgebung.

    # 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

Gilt nur für: Nur Windows. Linux und macOS werden nicht unterstützt.

Die interaktive Microsoft Entra-Authentifizierung verwendet ein Dialogfeld zur Authentifizierung und unterstützt die mehrstufige Authentifizierung (MFA). Für die interaktive Authentifizierung ist bcpVersion 15.0.1000.34 oder höher und ODBC-Treiber 18 für SQL Server (oder Treiber 17.2 oder höher) erforderlich.

Stellen Sie -G nur mit -U (Benutzername) bereit. Nicht -P einschließen. bcp fordert das Kennwort an (oder für Konten mit aktivierter MFA, schließt den konfigurierten MFA-Fluss ab).

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

Geben Sie für einen Microsoft Entra-Benutzer, der ein Windows-Konto aus einer Verbunddomäne ist, die Domäne in den Benutzernamen ein (z. B joe@contoso.com. ):

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

Wenn Gastbenutzer in einem Microsoft Entra-Mandanten Teil einer Gruppe sind, die Datenbankberechtigungen in Azure SQL-Datenbank hat, verwenden Sie den Gastbenutzeralias (z. B. keith0@adventure-works.com).

Hilfe erhalten

Zur SQL-Dokumentation beitragen

Wussten Sie schon, dass Sie SQL-Inhalte selbst bearbeiten könnten? Wenn Sie dies tun, helfen Sie nicht nur, unsere Dokumentation zu verbessern, sondern werden Sie auch als Mitwirkender der Seite erwähnt.

Weitere Informationen finden Sie unter Edit Microsoft Learn documentation.