SQL Server エミュレーションを使用して KQL クエリとストアド関数を実行する
Azure Data Explorer には、SQL Server内のデータに対してクエリを実行する方法と同様の方法でデータのクエリを実行できる表形式データ Stream (TDS) エンドポイントが用意されています。 エンドポイントでは、TDS バージョン 7.x と 8.0 がサポートされています。
この記事では、SQL 互換クライアントからストアド関数とKusto 照会言語 (KQL) クエリを実行する方法について説明します。
注意
この記事の情報は、TDS プロトコル (RPC 呼び出しとも呼ばれます) でパラメーター化された呼び出しを実行する場合に適用されます。
詳細については、Azure Data Explorer でのSQL Server エミュレーションの概要に関するページを参照してください。
KQL クエリを実行する
SQL ストアド プロシージャ sp_execute_kql
を使用して、パラメーター化されたクエリを含む KQL クエリを実行できます。 プロシージャは sp_executesql
ストアド プロシージャに似ています。
注意
プロシージャは sp_execute_kql
、通常の SQL クエリ内からではなく、次の例に示すように RPC 呼び出しを介してのみ呼び出すことができます。
の最初の sp_execute_kql
パラメーターは KQL クエリであり、他のすべてのパラメーターは クエリ パラメーターとして扱われます。 次の例は、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 ストアド プロシージャなどの ストアド関数 を作成して呼び出すことができます。 たとえば、次の表で説明するようにストアド関数がある場合は、コード例に示すように呼び出すことができます。
名前 | パラメーター | 本文 | フォルダー | 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
ストアド関数を呼び出しています。