Поделиться через


Выполнение запросов KQL и хранимых функций с эмуляцией SQL Server

Azure Data Explorer предоставляет конечную точку Stream табличных данных (TDS), которая позволяет запрашивать данные так же, как в SQL Server. Конечная точка поддерживает TDS версий 7.x и 8.0.

В этой статье вы узнаете, как выполнять хранимые функции и язык запросов Kusto (KQL) запросы из клиента, совместимого с SQL.

Примечание

Сведения в этой статье относятся к выполнению параметризованных вызовов по протоколу TDS, также известному как вызовы RPC.

Дополнительные сведения см. в обзоре эмуляции SQL Server в Azure Data Explorer.

Выполнение запросов KQL

Хранимую процедуру sp_execute_kql SQL можно использовать для выполнения запросов KQL , включая параметризованные запросы. Процедура аналогична хранимой процедуре sp_executesql .

Примечание

Процедуру sp_execute_kql можно вызвать только через вызов RPC, как показано в следующем примере, но не из обычного SQL-запроса.

Первым параметром sp_execute_kql является запрос KQL, а все остальные параметры обрабатываются как параметры запроса. В следующем примере показано, как использовать 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.
      }
    }
  }

Примечание

При вызове sp_execute_kql через TDS типы параметров задаются протоколом и не должны объявляться.

Вызов хранимых функций

Вы можете создавать и вызывать хранимые функции, такие как хранимые процедуры SQL. Например, если у вас есть хранимая функция, как описано в следующей таблице, ее можно вызвать, как показано в примере кода.

Название Параметры Текст Папка DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Демонстрационная функция с параметром
  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.
      }
    }
  }

Примечание

Чтобы различать хранимые функции и эмулированные системные хранимые процедуры SQL, вызовите хранимые функции с явной ссылкой на схему kusto . В этом примере хранимая функция вызывается с помощью kusto.Myfunction.