データを SQL にエクスポート
データを SQL にエクスポートすると、クエリを実行し、その結果を SQL データベース内のテーブル (Azure SQL Database サービスによってホストされている SQL データベースなど) に送信できます。
アクセス許可
このコマンドを実行するには、少なくとも Table 管理者 アクセス許可が必要です。
構文
.export
[async
] to
sql
sqlTableNamesqlConnectionString [with
(
propertyName=
propertyValue [,
...])
] <|
クエリ
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
async |
string |
指定した場合、コマンドは非同期的に実行されます。 | |
SqlTableName | string |
✔️ | データを挿入する SQL データベース テーブルの名前。 インジェクション攻撃から保護するために、この名前は制限付きです。 |
SqlConnectionString | string |
✔️ | SQL エンドポイントとデータベースの接続文字列。 文字列は、ADO.NET 接続文字列形式に従う必要があります。 セキュリティ上の理由から、接続文字列は制限付きです。 |
PropertyName、 PropertyValue | string |
省略可能な プロパティの一覧。 |
サポートされるプロパティ
件名 | Values | 説明 |
---|---|---|
firetriggers |
true または false |
true の場合は、ターゲット システムに対して、SQL テーブルで定義されている INSERT トリガーを起動するよう指示します。 既定値は、false です。 詳細については、「 BULK INSERT および System.Data.SqlClient.SqlBulkCopy を参照してください。 |
createifnotexists |
true または false |
true 場合、ターゲット SQL テーブルがまだ存在しない場合は作成されます。この場合、主キーである結果列を示すには、primarykey プロパティを指定する必要があります。 既定値は、false です。 |
primarykey |
createifnotexists が true 場合、このプロパティは、このコマンドによって作成された場合に SQL テーブルの主キーとして使用される結果の列の名前を示します。 |
|
persistDetails |
bool |
コマンドが結果を保持する必要があることを示します (async フラグを参照)。 既定では非同期実行で true されますが、呼び出し元が結果を必要としない場合はオフにすることができます。 同期実行では既定値は false に設定されますが、有効にできます。 |
token |
string |
Kusto が認証のために SQL エンドポイントに転送する Microsoft Entra アクセス トークン。 設定した場合、SQL 接続文字列に、 Authentication 、User ID 、または Password などの認証情報を含めないでください。 |
認証と権限承認
認証方法は指定された接続文字列に基づいており、SQL データベースへのアクセスに必要なアクセス許可は認証方法によって異なります。
SQL にデータをエクスポートするためにサポートされている認証方法は、Microsoft Entra 統合 (偽装) 認証ユーザー名/パスワード認証です。 偽装認証の場合は、プリンシパルにデータベースに対する次のアクセス許可があることを確認します。
- 既存のテーブル: テーブル UPDATE と INSERT
- 新しいテーブル: CREATE、UPDATE、INSERT
Note
可能であれば、Microsoft Entra 統合 (偽装) 認証が推奨される認証方法です。
制限事項と制約事項
SQL データベースにデータをエクスポートする場合、いくつかの制限事項と制限があります。
Kusto はクラウド サービスであるため、接続文字列はクラウドからアクセスできるデータベースを指している必要があります。 (特に、パブリック クラウドからアクセスできないため、オンプレミスのデータベースにエクスポートできません)。
Kusto では、呼び出し元プリンシパルが Microsoft Entra プリンシパル (
aaduser=
またはaadapp=
) である場合、Active Directory 統合認証がサポートされます。 または、Kusto では、接続文字列の一部として、SQLデータベースの資格情報の提供もサポートされています。 他の認証方法はサポートされていません。 SQL データベースに提示される ID は、Kusto サービス ID 自体ではなく、常にコマンド呼び出し元から発行されます。SQL データベース内のターゲット テーブルが存在する場合は、クエリ結果スキーマと一致する必要があります。 Azure SQL Database など、場合によっては、テーブルに ID 列としてマークされた 1 つの列があることを意味します。
大量のデータのエクスポートには時間がかかる場合があります。 一括インポート中のログ記録を最小限に抑える目的で、ターゲット SQL テーブルを設定することをお勧めします。
SQL Server データベース エンジン > ... >を参照してください。データベース機能>データの一括インポートとエクスポート 。データ エクスポートは、SQL 一括コピーを使用して実行され、データベースのターゲットに対してトランザクションされません。 トランザクション操作と一括コピー操作を参照してください。
SQL テーブル名は、文字、数字、スペース、アンダースコア (
_
)、ドット (.
)、ハイフン (-
) で構成される名前に制限されます。SQL接続文字列は次のように、
Persist Security Info
は明示的にfalse
に設定され、Encrypt
はtrue
に設定され、Trust Server Certificate
はfalse
に設定されるように制限されています。新しい SQL テーブルを作成するときに、列の主キー プロパティで指定できます。 列の型が
string
の場合、SQL は主キー列に対するその他の制限により、テーブルの作成を拒否する可能性があります。 これを回避するには、データをエクスポートする前に、SQL テーブルを手動で作成することです。 この制限は、SQL の主キー列のサイズを無制限にすることはできませんが、Kusto テーブル列には宣言されたサイズ制限がないためです。
Azure Database Microsoft Entra 統合認証のドキュメント
例
SQL テーブルへの非同期エクスポート
次の例では、Kusto によってクエリが実行され、クエリによって生成された最初のレコード セットが、サーバー myserver
の MyDatabase
データベースの 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 によってクエリが実行され、クエリによって生成された最初のレコード セットが、サーバー myserver
の MyDatabase
データベースの 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
関連コンテンツ
- クエリ からの取り込みの
- 管理コマンドの概要
- 外部テーブルへのエクスポート
- クラウド ストレージ にデータをエクスポートする
- Azure SQL 外部テーブルの作成と変更