Executar consultas KQL e funções armazenadas com emulação do SQL Server
O Azure Data Explorer fornece um ponto de extremidade TDS (Fluxo de Dados Tabulares) que permite consultar dados de maneira semelhante à forma como você consultaria dados no SQL Server. O ponto de extremidade é compatível com as versões 7.x e 8.0 do TDS.
Neste artigo, você aprenderá a executar funções armazenadas e consultas KQL (Kusto Query Language) de um cliente compatível com SQL.
Observação
As informações neste artigo se aplicam à execução de chamadas parametrizadas no protocolo TDS, também conhecidas como chamadas RPC.
Para obter mais informações, consulte a visão geral sobre a emulação do SQL Server no Azure Data Explorer.
Executar consultas KQL
O procedimento sp_execute_kql
armazenado SQL pode ser usado para executar consultas KQL , incluindo consultas parametrizadas. O procedimento é semelhante ao sp_executesql
procedimento armazenado.
Observação
O sp_execute_kql
procedimento só pode ser chamado por meio de uma chamada RPC, conforme mostrado no exemplo a seguir, e não de dentro de uma consulta SQL regular.
O primeiro parâmetro de é a consulta KQL e quaisquer outros parâmetros são tratados como parâmetros de sp_execute_kql
consulta. O exemplo a seguir mostra como usar 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.
}
}
}
Observação
Ao chamar sp_execute_kql
via TDS, os tipos de parâmetro são definidos pelo protocolo e não precisam ser declarados.
Chamar funções armazenadas
Você pode criar e chamar funções armazenadas como procedimentos armazenados SQL. Por exemplo, se você tiver uma função armazenada, conforme descrito na tabela a seguir, poderá chamá-la conforme mostrado no exemplo de código.
Nome | Parâmetros | Corpo | Pasta | DocString |
---|---|---|---|---|
MyFunction | (myLimit: long) | {StormEvents | take myLimit} | MyFolder | Função de demonstração com parâmetro |
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.
}
}
}
Observação
Para distinguir entre funções armazenadas e procedimentos armazenados do sistema SQL emulados, chame funções armazenadas com uma referência explícita ao kusto
esquema. No exemplo, a função armazenada é chamada usando kusto.Myfunction
.