Ejecución de consultas KQL y funciones almacenadas con emulación de SQL Server
Azure Data Explorer proporciona un punto de conexión de flujo de datos tabular (TDS) que permite consultar datos de una manera similar a cómo consultaría los datos en SQL Server. El punto de conexión admite las versiones 7.x y 8.0 de TDS.
En este artículo, aprenderá a ejecutar funciones almacenadas y consultas de Lenguaje de consulta Kusto (KQL) desde un cliente compatible con SQL.
Nota:
La información de este artículo se aplica a la ejecución de llamadas parametrizadas a través del protocolo TDS, también conocido como llamadas RPC.
Para más información, consulte la información general sobre la emulación de SQL Server en Azure Data Explorer.
Ejecución de consultas KQL
El procedimiento sp_execute_kql
almacenado de SQL se puede usar para ejecutar consultas KQL , incluidas las consultas con parámetros. El procedimiento es similar al sp_executesql
procedimiento almacenado.
Nota:
El sp_execute_kql
procedimiento solo se puede llamar a través de una llamada RPC, como se muestra en el ejemplo siguiente y no desde dentro de una consulta SQL normal.
El primer parámetro de sp_execute_kql
es la consulta KQL y cualquier otro parámetro se trata como parámetros de consulta. En el ejemplo siguiente se muestra cómo utilizar 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:
Al llamar a sp_execute_kql
mediante TDS, el protocolo establece los tipos de parámetro y no es necesario declararlos.
Llamada a funciones almacenadas
Puede crear y llamar a funciones almacenadas como procedimientos almacenados de SQL. Por ejemplo, si tiene una función almacenada como se describe en la tabla siguiente, puede llamarla como se muestra en el ejemplo de código.
Nombre | Parámetros | Cuerpo | Carpeta | DocString |
---|---|---|---|---|
MyFunction | (myLimit: long) | {StormEvents | take myLimit} | MyFolder | Función de demostración con 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.
}
}
}
Nota:
Para distinguir entre funciones almacenadas y procedimientos almacenados emulados del sistema SQL, llame a funciones almacenadas con una referencia explícita al kusto
esquema. En el ejemplo, se llama a la función almacenada mediante kusto.Myfunction
.