Spouštění dotazů KQL a uložených funkcí s emulací SQL Serveru
Azure Data Explorer poskytuje koncový bod TDS (Tabular Data Stream), který umožňuje dotazovat data podobným způsobem jako dotazování dat na SQL Serveru. Koncový bod podporuje TDS verze 7.x a 8.0.
V tomto článku se dozvíte, jak spouštět uložené funkce a dotazy dotazovací jazyk Kusto (KQL) z klienta kompatibilního s SQL.
Poznámka:
Informace v tomto článku platí pro spouštění parametrizovaných volání přes protokol TDS, označované také jako volání RPC.
Další informace najdete v přehledu emulace SQL Serveru v Azure Data Exploreru.
Spouštění dotazů KQL
Uloženou proceduru sp_execute_kql
SQL lze použít ke spouštění dotazů KQL , včetně parametrizovaných dotazů. Postup je podobný uložené proceduře sp_executesql
.
Poznámka:
Proceduru sp_execute_kql
lze volat pouze prostřednictvím volání RPC, jak je znázorněno v následujícím příkladu, a ne z běžného dotazu SQL.
Prvním parametrem sp_execute_kql
je dotaz KQL a všechny ostatní parametry se považují za parametry dotazu. Následující příklad ukazuje, jak používat 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.
}
}
}
Poznámka:
Při volání sp_execute_kql
prostřednictvím TDS jsou typy parametrů nastaveny protokolem a nemusí být deklarovány.
Volání uložených funkcí
Můžete vytvářet a volat uložené funkce , jako jsou uložené procedury SQL. Pokud máte například uloženou funkci popsanou v následující tabulce, můžete ji volat, jak je znázorněno v příkladu kódu.
Název | Parametry | Text | Složka | DocString |
---|---|---|---|---|
MyFunction | (myLimit: long) | {StormEvents | take myLimit} | MyFolder | Demo funkce s parametrem |
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.
}
}
}
Poznámka:
Chcete-li rozlišovat mezi uloženými funkcemi a emulovanými uloženými procedurami systému SQL, volejte uložené funkce s explicitním odkazem na kusto
schéma. V příkladu se uložená funkce volá pomocí kusto.Myfunction
.