次の方法で共有


データを SQL にエクスポート

データを SQL にエクスポートすると、クエリを実行し、その結果を SQL データベース内のテーブル (Azure SQL Database サービスによってホストされている SQL データベースなど) に送信できます。

アクセス許可

このコマンドを実行するには、少なくとも Table 管理 アクセス許可が必要です。

構文

.export[async] tosqlsqlTableNamesqlConnectionString [with(propertyName=propertyValue [, ...]] <|)クエリ

構文規則について詳しく知る。

パラメーター

件名 タイプ 必須 説明
async string 指定した場合、コマンドは非同期的に実行されます。
SqlTableName string ✔️ データを挿入する SQL データベース テーブルの名前。 インジェクション攻撃から保護するために、この名前は制限付きです。
SqlConnectionString string ✔️ SQL エンドポイントとデータベースの接続文字列。 文字列は、接続文字列形式にADO.NET従う必要があります。 セキュリティ上の理由から、接続文字列は制限付きです。
PropertyNamePropertyValue string 省略可能な プロパティの一覧。

サポートされているプロパティ

名前 Values 説明
firetriggers true または false true の場合は、ターゲット システムに対して、SQL テーブルで定義されている INSERT トリガーを起動するよう指示します。 既定値は、false です。 詳細については、「BULK IN Standard Edition RT」および「System.Data.SqlClient.SqlBulkCopy」を参照してください。
createifnotexists true または false ターゲット SQL テーブルがまだ存在primarykeyしない場合trueは、ターゲット SQL テーブルが作成されます。この場合は、主キーである結果列を示すプロパティを指定する必要があります。 既定値は、false です。
primarykey ある場合 createifnotexists 、このプロパティは true、このコマンドによって作成された場合に SQL テーブルの主キーとして使用される結果の列の名前を示します。
persistDetails bool コマンドが結果を保持する必要があることを示します (async フラグを参照)。 非同期実行では既定値は true に設定されますが、呼び出し元が結果を必要としない場合は無効にできます。 同期実行では既定値は false に設定されますが、有効にできます。
token string Kusto が認証のために SQL エンドポイントに転送する Microsoft Entra アクセス トークン。 設定した場合、SQL 接続文字列に、 AuthenticationUser ID、または Password などの認証情報を含めないでください。

認証と権限承認

認証方法は指定された接続文字列に基づいており、SQL データベースへのアクセスに必要なアクセス許可は認証方法によって異なります。

SQL にデータをエクスポートするためにサポートされている認証方法は、Microsoft Entra 統合 (偽装) 認証とユーザー名/パスワード認証です。 偽装認証の場合は、プリンシパルにデータベースに対する次のアクセス許可があることを確認します。

  • 既存のテーブル: テーブル UPDATE と IN Standard Edition RT
  • 新しいテーブル: CREATE、UPDATE、IN Standard Edition RT

Note

可能であれば、Microsoft Entra 統合 (偽装) 認証が推奨される認証方法です。

制限事項と制約事項

SQL データベースにデータをエクスポートする場合、いくつかの制限事項と制限があります。

  1. Kusto はクラウド サービスであるため、接続文字列はクラウドからアクセスできるデータベースを指している必要があります。 (特に、パブリック クラウドからアクセスできないため、オンプレミスのデータベースにエクスポートできません)。

  2. Kusto では、呼び出し元のプリンシパルが Microsoft Entra プリンシパル (aaduser= または aadapp=) である場合、Active Directory 統合認証がサポートされます。 または、Kusto では、接続文字列の一部として、SQLデータベースの資格情報の提供もサポートされています。 他の認証方法はサポートされていません。 SQL データベースに提示される ID は、Kusto サービス ID 自体ではなく、常にコマンド呼び出し元から発行されます。

  3. SQL データベース内のターゲット テーブルが存在する場合は、クエリ結果スキーマと一致する必要があります。 場合によっては (Azure SQL Database など)、テーブルに ID 列としてマークされた列が 1 つ含まれる場合があります。

  4. 大量のデータのエクスポートには長い時間がかかる場合があります。 一括インポート中のログ記録を最小限に抑える目的で、ターゲット SQL テーブルを設定することをお勧めします。 SQL Server データベース エンジン > ... を参照してください。 >データベース機能: > データの一括インポートとエクスポート。

  5. データ エクスポートは、SQL 一括コピーを使用して実行され、データベースのターゲットに対してトランザクションされません。 トランザクション操作と一括コピー操作を参照してください

  6. SQL テーブル名は、文字、数字、スペース、アンダースコア (_)、ドット (.)、ハイフン (-) で構成される名前に制限されます。

  7. SQL接続文字列は次のように、Persist Security Info は明示的に false に設定され、Encrypttrueに設定され、Trust Server Certificatefalseに設定されるように制限されています。

  8. 新しい SQL テーブルを作成するときに、列の主キー プロパティで指定できます。 列の型が string の場合、SQL は主キー列に対するその他の制限により、テーブルの作成を拒否する可能性があります。 これを回避するには、データをエクスポートする前に、SQL テーブルを手動で作成することです。 この制限の理由は、SQL の主キー列は無制限のサイズにできませんが、Kusto テーブル列には宣言されたサイズ制限が適用されないためです。

Azure DB Microsoft Entra 統合認証のドキュメント

この例では、Kusto はクエリを実行し、クエリによって生成された最初のレコード セットをMyDatabaseサーバー 内のデータベースmyserver内の MySqlTable テーブルにエクスポートします。

.export async to sql MySqlTable
    h@"Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=MyDatabase;Connection Timeout=30;"
    <| print Id="d3b68d12-cbd3-428b-807f-2c740f561989", Name="YSO4", DateOfBirth=datetime(2017-10-15)

この例では、Kusto はクエリを実行し、クエリによって生成された最初のレコード セットをMyDatabaseサーバー 内のデータベースmyserver内の MySqlTable テーブルにエクスポートします。 ターゲット テーブルがターゲット データベースに存在しない場合、作成されます。

.export async to sql ['dbo.MySqlTable']
    h@"Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=MyDatabase;Connection Timeout=30;"
    with (createifnotexists="true", primarykey="Id")
    <| print Message = "Hello World!", Timestamp = now(), Id=12345678