Compartilhar via


Executar consultas KQL e funções armazenadas com emulação do SQL Server

O Azure Data Explorer fornece um ponto de extremidade TDS (Fluxo de Dados Tabulares) que permite consultar dados de maneira semelhante à forma como você consultaria dados no SQL Server. O ponto de extremidade é compatível com as versões 7.x e 8.0 do TDS.

Neste artigo, você aprenderá a executar funções armazenadas e consultas KQL (Kusto Query Language) de um cliente compatível com SQL.

Observação

As informações neste artigo se aplicam à execução de chamadas parametrizadas no protocolo TDS, também conhecidas como chamadas RPC.

Para obter mais informações, consulte a visão geral sobre a emulação do SQL Server no Azure Data Explorer.

Executar consultas KQL

O procedimento sp_execute_kql armazenado SQL pode ser usado para executar consultas KQL , incluindo consultas parametrizadas. O procedimento é semelhante ao sp_executesql procedimento armazenado.

Observação

O sp_execute_kql procedimento só pode ser chamado por meio de uma chamada RPC, conforme mostrado no exemplo a seguir, e não de dentro de uma consulta SQL regular.

O primeiro parâmetro de é a consulta KQL e quaisquer outros parâmetros são tratados como parâmetros de sp_execute_kql consulta. O exemplo a seguir mostra como usar 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.
      }
    }
  }

Observação

Ao chamar sp_execute_kql via TDS, os tipos de parâmetro são definidos pelo protocolo e não precisam ser declarados.

Chamar funções armazenadas

Você pode criar e chamar funções armazenadas como procedimentos armazenados SQL. Por exemplo, se você tiver uma função armazenada, conforme descrito na tabela a seguir, poderá chamá-la conforme mostrado no exemplo de código.

Nome Parâmetros Corpo Pasta DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Função de demonstração com parâmetro
  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.
      }
    }
  }

Observação

Para distinguir entre funções armazenadas e procedimentos armazenados do sistema SQL emulados, chame funções armazenadas com uma referência explícita ao kusto esquema. No exemplo, a função armazenada é chamada usando kusto.Myfunction.