bcp で Microsoft Entra ID を使用して認証する

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric SQL Database

一括コピー プログラム ユーティリティ (bcp) では、Azure SQL Database、Azure SQL Managed Instance、Microsoft Fabric の SQL Database、Azure Synapse Analytics、または SQL Server 2022 (16.x) 以降のバージョンに接続するときに、いくつかの Microsoft Entra ID 認証モデルがサポートされます。

インストールされている bcp が Microsoft Entra 認証をサポートしているかどうかを確認するには、 bcp --help を実行し、使用可能な引数の一覧に -G が表示されることを確認します。

プラットフォームの制限

すべてのプラットフォームですべての認証モードを使用できるわけではありません。

Microsoft Entra ユーザー名とパスワード

-G (ユーザー名) と-U (パスワード) と共に-Pを指定します。

次の例では、テーブル bcptesttestdbのデータベース contoso.database.windows.netからファイル c:\last\data1.datにエクスポートします。 <password> を有効なパスワードに置き換えます。

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

次の例では、同じデータをインポートします。

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 の統合

-G-Uなしで-Pを提供します。 現在の Windows アカウント (または Linux/macOS 上の Kerberos ID) は、Microsoft Entra ID とフェデレーションする必要があります。 次の例では、 <server> をサーバー名に置き換えます。

エクスポート:

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

インポート:

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

Microsoft Entra マネージド サービス ID

構成された DSN を使用して、システム割り当てマネージド ID またはユーザー割り当てマネージド ID として認証します。 同じアプローチは、 bcp inbcp outの両方で機能します。

Important

bcp はドライバーに緊密に結合されています。 bcp のメジャー バージョンは、DSN が作成されるドライバーのメジャー バージョンと一致している必要があります。 bcp のバージョンを確認するには、bcp -vを実行します。

ODBC データ ソース管理者を使用して DSN を構成します。

  1. キーボードの Windows キーを押します。
  2. ODBC 」と入力し、適切なバージョンの ODBC データ ソース アドミニストレーターを選択します。
  3. [ ユーザー DSN ] タブまたは [ システム DSN ] タブを選択します。
  4. [ 追加] を選択し、プロンプトに従います。
  5. 認証の種類を求められたら、 Azure マネージド サービス ID 認証を選択します。
  6. ユーザー割り当てマネージド ID の場合は、ID の Object (principal) ID を [認証] タブの [ログイン ID ] ボックスに貼り付けます。
  7. プロンプトに従って DSN の構成を完了します。

スクリーンショットを含む完全なチュートリアルについては、「UI で DSN を作成および編集する」を参照してください。

-D フラグを使用して、-Sに渡される値が DSN であることを示します。 -Dスイッチと-S スイッチは、コマンド ライン上の任意の順序で表示できます。

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

Microsoft Entra ID アクセス トークン

適用対象: Linux と macOS のみ。 Windows はサポートされていません。

Linux および macOS の bcp 17.8 以降のバージョンでは、アクセス トークンを使用して認証できます。 次の例では、 Azure CLI を使用してトークンを取得し、セキュリティで保護された一時ファイルに書き込みます。

Important

トークン ファイルは、BOM なしの UTF-16LE である必要があります。 次の例に示すように、ファイルのアクセス許可を制限し、不要になったらファイルを削除します。

システムによって割り当てられた管理ID

<server>をサーバー名に置き換えます。

  1. マネージド ID でサインインします。

    az login --identity
    
  2. トークンを取得し、セキュリティで保護された一時ファイルに書き込み、 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"
    

ユーザー指定のマネージド ID

  1. ユーザー割り当てマネージド ID でサインインします。 <client_id>を環境の有効な値に置き換えます。

    az login --identity --username <client_id>
    
  2. トークンを取得し、セキュリティで保護された一時ファイルに書き込み、bcp を実行 します<server>を環境の有効な値に置き換えます。

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

適用対象: Windows のみ。 Linux と macOS はサポートされません。

Microsoft Entra 対話型認証では、ダイアログを使用して認証が行われ、多要素認証 (MFA) がサポートされます。 対話型認証には 、bcpバージョン 15.0.1000.34 以降と、 SQL Server 用 ODBC Driver 18 (またはドライバー 17.2 以降) が必要です。

-Gには-U(ユーザー名)のみを提供してください。 -Pを含めないでください。 bcp はパスワードの入力を求めます (または MFA が有効になっているアカウントの場合は、構成された MFA フローが完了します)。

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

フェデレーション ドメインの Windows アカウントである Microsoft Entra ユーザーの場合は、ユーザー名にドメインを含めます (たとえば、 joe@contoso.com)。

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

Microsoft Entra テナントのゲスト ユーザーが、Azure SQL Database のデータベースアクセス許可を持つグループの一部である場合は、ゲスト ユーザー エイリアス ( keith0@adventure-works.com など) を使用します。

サポートを受ける

SQL ドキュメントへの投稿

SQL コンテンツを自分で編集できることはご存じですか。 これにより、ドキュメントが改善されるだけでなく、ページの共同作成者としてもクレジットされます。

詳細については、 Microsoft Learn ドキュメントの編集を参照してください。