Dela via


Köra KQL-frågor och lagrade funktioner med SQL Server emulering

Azure Data Explorer tillhandahåller en TDS-slutpunkt (Tabular Data Stream) som gör att du kan fråga efter data på ett sätt som liknar hur du frågar efter data i SQL Server. Slutpunkten stöder TDS-versionerna 7.x och 8.0.

I den här artikeln får du lära dig hur du kör lagrade funktioner och Kusto-frågespråk frågor (KQL) från en SQL-kompatibel klient.

Anteckning

Informationen i den här artikeln gäller för körning av parametriserade anrop via TDS-protokollet, även kallat RPC-anrop.

Mer information finns i översikten över SQL Server emulering i Azure Data Explorer.

Köra KQL-frågor

Den lagrade SQL-proceduren sp_execute_kql kan användas för att köra KQL-frågor , inklusive parametriserade frågor. Proceduren liknar den sp_executesql lagrade proceduren.

Anteckning

Proceduren sp_execute_kql kan bara anropas via ett RPC-anrop enligt följande exempel och inte inifrån en vanlig SQL-fråga.

Den första parametern sp_execute_kql i är KQL-frågan och andra parametrar behandlas som frågeparametrar. I följande exempel visas hur du använder 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.
      }
    }
  }

Anteckning

Vid anrop sp_execute_kql via TDS anges parametertyper av protokollet och behöver inte deklareras.

Anropa lagrade funktioner

Du kan skapa och anropa lagrade funktioner som SQL-lagrade procedurer. Om du till exempel har en lagrad funktion enligt beskrivningen i följande tabell kan du anropa den enligt kodexemplet.

Name Parametrar Brödtext Mapp DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demofunktion med parameter
  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.
      }
    }
  }

Anteckning

För att skilja mellan lagrade funktioner och emulerade lagrade SQL-systemprocedurer anropar du lagrade funktioner med en explicit referens till kusto schemat. I exemplet anropas den lagrade funktionen med .kusto.Myfunction