Ausführen von KQL-Abfragen und gespeicherten Funktionen mit SQL Server Emulation

Azure Data Explorer stellt einen TDS-Endpunkt (Tabular Data Stream) bereit, mit dem Sie Daten ähnlich wie in SQL Server abfragen können. Der Endpunkt unterstützt die TDS-Versionen 7.x und 8.0.

In diesem Artikel erfahren Sie, wie Sie gespeicherte Funktionen und Kusto-Abfragesprache -Abfragen (KQL) von einem SQL-kompatiblen Client ausführen.

Hinweis

Die Informationen in diesem Artikel gelten für die Ausführung parametrisierter Aufrufe über das TDS-Protokoll, die auch als RPC-Aufrufe bezeichnet werden.

Weitere Informationen finden Sie in der Übersicht über SQL Server Emulation in Azure Data Explorer.

Ausführen von KQL-Abfragen

Die gespeicherte SQL-Prozedur sp_execute_kql kann verwendet werden, um KQL-Abfragen auszuführen, einschließlich parametrisierter Abfragen. Die Prozedur ähnelt der gespeicherten sp_executesql Prozedur.

Hinweis

Die sp_execute_kql Prozedur kann nur über einen RPC-Aufruf aufgerufen werden, wie im folgenden Beispiel gezeigt, und nicht über eine reguläre SQL-Abfrage.

Der erste Parameter von sp_execute_kql ist die KQL-Abfrage, und alle anderen Parameter werden als Abfrageparameter behandelt. Das folgende Beispiel veranschaulicht die Verwendung von 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.
      }
    }
  }

Hinweis

Beim Aufrufen sp_execute_kql über TDS werden Parametertypen vom Protokoll festgelegt und müssen nicht deklariert werden.

Aufrufen gespeicherter Funktionen

Sie können gespeicherte Funktionen wie gespeicherte SQL-Prozeduren erstellen und aufrufen. Wenn Sie beispielsweise über eine gespeicherte Funktion verfügen, wie in der folgenden Tabelle beschrieben, können Sie sie aufrufen, wie im Codebeispiel gezeigt.

Name Parameter Text Ordner DocString
Myfunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demofunktion mit 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.
      }
    }
  }

Hinweis

Um zwischen gespeicherten Funktionen und emulierten gespeicherten SQL-Systemprozeduren zu unterscheiden, rufen Sie gespeicherte Funktionen mit einem expliziten Verweis auf das kusto Schema auf. Im Beispiel wird die gespeicherte Funktion mit kusto.Myfunctionaufgerufen.