SQL Server エミュレーションを使用して KQL クエリとストアド関数を実行する
Azure Data Explorer には、SQL Server のデータに対してクエリを実行する方法と同様の方法でデータのクエリを実行できる、表形式データ ストリーム (TDS) エンドポイントが用意されています。 このエンドポイントでは、TDS バージョン 7.x と 8.0 がサポートされます。
この記事では、SQL 互換クライアントからストアド関数 Kusto 照会言語 (KQL) クエリを実行する方法について説明します。
Note
この記事の情報は、TDS プロトコル (RPC 呼び出しとも呼ばれます) でパラメーター化された呼び出しを実行する場合に適用されます。
詳細については、Azure Data Explorer の SQL Server エミュレーションのオーバービューを参照してください。
KQL クエリを実行する
SQL ストアド プロシージャ sp_execute_kql
を使用して、パラメーター化されたクエリを含む KQL クエリを実行できます。 プロシージャは sp_executesql
ストアド プロシージャに似ています。
Note
sp_execute_kql
プロシージャは、通常の SQL クエリ内からではなく、次の例に示すように RPC 呼び出しを介してのみ呼び出すことができます。
sp_execute_kql
の最初のパラメーターは KQL クエリであり、その他のパラメーターはすべて query パラメーターとして扱われます。 次の例は、sp_execute_kql
を使用する方法を示しています。
using (var connection = new SqlConnection(csb.ToString()))
{
await connection.OpenAsync();
using (var command = new SqlCommand("sp_execute_kql", connection))
{
command.CommandType = CommandType.StoredProcedure;
var query = new SqlParameter("@kql_query", SqlDbType.NVarChar);
command.Parameters.Add(query);
var parameter = new SqlParameter("mylimit", SqlDbType.Int);
command.Parameters.Add(parameter);
query.Value = "StormEvents | take myLimit";
parameter.Value = 3;
using (var reader = await command.ExecuteReaderAsync())
{
// Read the response.
}
}
}
Note
TDS を使用して sp_execute_kql
を呼び出す場合、パラメーターの型はプロトコルによって設定されるため、宣言する必要はありません。
ストアド関数を呼び出す
SQL ストアド プロシージャのようにストアド関数を作成して呼び出すことができます。 たとえば、次の表に示すようにストアド関数がある場合は、コード例に示すように呼び出すことができます。
Name | パラメーター | 本文 | フォルダー | DocString |
---|---|---|---|---|
MyFunction | (myLimit: long) | {StormEvents | take myLimit} | MyFolder | パラメーターを使用したデモ関数 |
using (var connection = new SqlConnection(csb.ToString()))
{
await connection.OpenAsync();
using (var command = new SqlCommand("kusto.MyFunction", connection))
{
command.CommandType = CommandType.StoredProcedure;
var parameter = new SqlParameter("mylimit", SqlDbType.Int);
command.Parameters.Add(parameter);
parameter.Value = 3;
using (var reader = await command.ExecuteReaderAsync())
{
// Read the response.
}
}
}
Note
ストアド関数とエミュレートされた SQL システム ストアド プロシージャを区別するには、 kusto
スキーマへの明示的な参照を使用してストアド関数を呼び出します。 この例では、ストアド関数は kusto.Myfunction
を使用して呼び出されます。