Spouštění dotazů KQL a uložených funkcí pomocí emulace SQL Server

Azure Data Explorer poskytuje koncový bod TDS (Tabular Data Stream), který umožňuje dotazovat data podobným způsobem jako dotazování dat v SQL Server. Koncový bod podporuje TDS verze 7.x a 8.0.

V tomto článku se dozvíte, jak spouštět uložené funkce a dotazy dotazovací jazyk Kusto (KQL) z klienta kompatibilního s SQL.

Poznámka

Informace v tomto článku se týkají spouštění parametrizovaných volání přes protokol TDS, označovaný také jako volání RPC.

Další informace najdete v přehledu emulace SQL Server v Azure Data Explorer.

Spouštění dotazů KQL

Uložená procedura sp_execute_kql SQL se dá použít ke spouštění dotazů KQL , včetně parametrizovaných dotazů. Procedura je podobná uložené proceduře sp_executesql .

Poznámka

Proceduru sp_execute_kql lze volat pouze prostřednictvím volání RPC, jak je znázorněno v následujícím příkladu, a ne z běžného dotazu SQL.

Prvním parametrem sp_execute_kql je dotaz KQL a všechny ostatní parametry se považují za parametry dotazu. Následující příklad ukazuje, jak použít 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.
      }
    }
  }

Poznámka

Při volání sp_execute_kql přes TDS jsou typy parametrů nastaveny protokolem a není nutné je deklarovat.

Volání uložených funkcí

Můžete vytvářet a volat uložené funkce , jako jsou uložené procedury SQL. Pokud máte například uloženou funkci, jak je popsáno v následující tabulce, můžete ji volat, jak je znázorněno v příkladu kódu.

Name Parametry Text Složka DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demo funkce s parametrem
  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.
      }
    }
  }

Poznámka

Pokud chcete rozlišovat mezi uloženými funkcemi a emulovanými uloženými procedurami systému SQL, volejte uložené funkce s explicitním odkazem na kusto schéma. V příkladu je uložená funkce volána pomocí kusto.Myfunction.