Sdílet prostřednictvím


Spouštění dotazů KQL a uložených funkcí s emulací SQL Serveru

Azure Data Explorer poskytuje koncový bod TDS (Tabular Data Stream), který umožňuje dotazovat data podobným způsobem jako dotazování dat na SQL Serveru. 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 platí pro 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 Serveru v Azure Data Exploreru.

Spouštění dotazů KQL

Uloženou proceduru sp_execute_kql SQL lze použít ke spouštění dotazů KQL , včetně parametrizovaných dotazů. Postup 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žívat 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 prostřednictvím TDS jsou typy parametrů nastaveny protokolem a nemusí být deklarovány.

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 popsanou v následující tabulce, můžete ji volat, jak je znázorněno v příkladu kódu.

Název 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:

Chcete-li 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 se uložená funkce volá pomocí kusto.Myfunction.