Eseguire query KQL e funzioni archiviate con l'emulazione di SQL Server
Azure Esplora dati fornisce un endpoint TDS (Tabular Data Stream) che consente di eseguire query sui dati in modo simile a come eseguire query sui dati in SQL Server. L'endpoint supporta TDS versioni 7.x e 8.0.
Questo articolo illustra come eseguire le funzioni archiviate e le query di Linguaggio di query Kusto (KQL) da un client compatibile con SQL.
Nota
Le informazioni contenute in questo articolo si applicano all'esecuzione di chiamate con parametri sul protocollo TDS, note anche come chiamate RPC.
Per altre informazioni, vedere la panoramica sull'emulazione di SQL Server in Azure Esplora dati.
Eseguire query KQL
La stored procedure sp_execute_kql
SQL può essere usata per eseguire query KQL , incluse le query con parametri. La stored procedure è simile alla sp_executesql
stored procedure.
Nota
La sp_execute_kql
procedura può essere chiamata solo tramite una chiamata RPC, come illustrato nell'esempio seguente e non dall'interno di una normale query SQL.
Il primo parametro di sp_execute_kql
è la query KQL e tutti gli altri parametri vengono considerati come parametri di query. Nell'esempio riportato di seguito viene illustrato come usare 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.
}
}
}
Nota
Quando si chiama sp_execute_kql
tramite TDS, i tipi di parametro vengono impostati dal protocollo e non devono essere dichiarati.
Chiamare le funzioni archiviate
È possibile creare e chiamare funzioni archiviate come stored procedure SQL. Ad esempio, se si dispone di una funzione archiviata come descritto nella tabella seguente, è possibile chiamarla come illustrato nell'esempio di codice.
Nome | Parametri | Testo | Cartella | DocString |
---|---|---|---|---|
MyFunction | (myLimit: long) | {StormEvents | take myLimit} | MyFolder | Funzione demo con parametro |
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.
}
}
}
Nota
Per distinguere tra le funzioni archiviate e le stored procedure di sistema SQL emulate, chiamare le funzioni archiviate con un riferimento esplicito allo kusto
schema. Nell'esempio la funzione archiviata viene chiamata usando kusto.Myfunction
.