次の方法で共有


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

適用対象: ✅Microsoft FabricAzure データ エクスプローラー

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

アクセス許可

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

構文

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

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

パラメーター

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

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

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

認証と権限承認

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

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

  • 既存のテーブル: テーブル UPDATE と INSERT
  • 新しいテーブル: CREATE、UPDATE、INSERT

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 Database Microsoft Entra 統合認証のドキュメント

SQL テーブルへの非同期エクスポート

次の例では、Kusto によってクエリが実行され、クエリによって生成された最初のレコード セットが、サーバー myserverMyDatabase データベースの 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)

SQL テーブルが存在しない場合はエクスポートする

次の例では、Kusto によってクエリが実行され、クエリによって生成された最初のレコード セットが、サーバー myserverMyDatabase データベースの 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