Köra KQL-frågor och lagrade funktioner med SQL Server emulering
Azure Data Explorer tillhandahåller en TDS-slutpunkt (Tabular Data Stream) som gör att du kan fråga efter data på ett sätt som liknar hur du frågar efter data i SQL Server. Slutpunkten stöder TDS-versionerna 7.x och 8.0.
I den här artikeln får du lära dig hur du kör lagrade funktioner och Kusto-frågespråk frågor (KQL) från en SQL-kompatibel klient.
Anteckning
Informationen i den här artikeln gäller för körning av parametriserade anrop via TDS-protokollet, även kallat RPC-anrop.
Mer information finns i översikten över SQL Server emulering i Azure Data Explorer.
Köra KQL-frågor
Den lagrade SQL-proceduren sp_execute_kql
kan användas för att köra KQL-frågor , inklusive parametriserade frågor. Proceduren liknar den sp_executesql
lagrade proceduren.
Anteckning
Proceduren sp_execute_kql
kan bara anropas via ett RPC-anrop enligt följande exempel och inte inifrån en vanlig SQL-fråga.
Den första parametern sp_execute_kql
i är KQL-frågan och andra parametrar behandlas som frågeparametrar. I följande exempel visas hur du använder 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.
}
}
}
Anteckning
Vid anrop sp_execute_kql
via TDS anges parametertyper av protokollet och behöver inte deklareras.
Anropa lagrade funktioner
Du kan skapa och anropa lagrade funktioner som SQL-lagrade procedurer. Om du till exempel har en lagrad funktion enligt beskrivningen i följande tabell kan du anropa den enligt kodexemplet.
Name | Parametrar | Brödtext | Mapp | DocString |
---|---|---|---|---|
MyFunction | (myLimit: long) | {StormEvents | take myLimit} | MyFolder | Demofunktion med parameter |
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.
}
}
}
Anteckning
För att skilja mellan lagrade funktioner och emulerade lagrade SQL-systemprocedurer anropar du lagrade funktioner med en explicit referens till kusto
schemat. I exemplet anropas den lagrade funktionen med .kusto.Myfunction