Share via


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

O Azure Data Explorer fornece um ponto final de Stream de Dados Tabulares (TDS) que lhe permite consultar dados de uma forma semelhante à forma como consultaria dados em SQL Server. O ponto final suporta as versões TDS 7.x e 8.0.

Neste artigo, irá aprender a executar funções armazenadas e Linguagem de Pesquisa Kusto consultas (KQL) a partir de um cliente compatível com SQL.

Nota

As informações neste artigo aplicam-se à execução de chamadas parametrizadas através do protocolo TDS, também conhecido como chamadas RPC.

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

Executar consultas KQL

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

Nota

O sp_execute_kql procedimento só pode ser chamado através de uma chamada RPC, conforme mostrado no exemplo seguinte e não a partir de uma consulta SQL normal.

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

Nota

Ao chamar sp_execute_kql através do TDS, os tipos de parâmetros são definidos pelo protocolo e não precisam de ser declarados.

Funções armazenadas de chamadas

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

Name 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.
      }
    }
  }

Nota

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