Compartir a través de


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.