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


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

Azure Data Explorer предоставляет конечную точку табличного потока данных (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.