Freigeben über


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 auf ähnliche Weise abfragen können, wie Sie Daten in SQL Server abfragen würden. Der Endpunkt unterstützt TDS-Versionen 7.x und 8.0.

In diesem Artikel erfahren Sie, wie Gespeicherte Funktionen und Kusto-Abfragesprache (KQL)-Abfragen von einem SQL-kompatiblen Client ausgeführt werden.

Hinweis

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

Weitere Informationen finden Sie in der Übersicht zur SQL Server-Emulation im Azure-Daten-Explorer.

Ausführen von KQL-Abfragen

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

Hinweis

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

Der erste Parameter 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 eine gespeicherte Funktion wie in der folgenden Tabelle beschrieben haben, können Sie sie wie im Codebeispiel gezeigt aufrufen.

Name Parameter Text Ordner DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demo-Funktion 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 mithilfe von kusto.Myfunction.