Condividi tramite


Eseguire query KQL e funzioni archiviate con SQL Server emulazione

Azure Esplora dati fornisce un endpoint TDS (Tabular Data Stream) che consente di eseguire query sui dati in modo analogo a come eseguire query sui dati in SQL Server. L'endpoint supporta TDS versioni 7.x e 8.0.

Questo articolo illustra come eseguire funzioni archiviate e query di Linguaggio di query Kusto (KQL) da un client compatibile con SQL.

Nota

Le informazioni contenute in questo articolo si applicano all'esecuzione di chiamate con parametri sul protocollo TDS, note anche come chiamate RPC.

Per altre informazioni, vedere la panoramica sull'emulazione SQL Server in Azure Esplora dati.

Eseguire query KQL

La stored procedure sp_execute_kql SQL può essere usata per eseguire query KQL , incluse le query con parametri. La stored procedure è simile alla sp_executesql stored procedure.

Nota

La sp_execute_kql procedura può essere chiamata solo tramite una chiamata RPC, come illustrato nell'esempio seguente e non dall'interno di una normale query SQL.

Il primo parametro di sp_execute_kql è la query KQL e qualsiasi altro parametro viene considerato come parametri di query. Nell'esempio riportato di seguito viene illustrato come usare 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

Quando si chiama sp_execute_kql tramite TDS, i tipi di parametro vengono impostati dal protocollo e non devono essere dichiarati.

Chiamare le funzioni archiviate

È possibile creare e chiamare funzioni archiviate come stored procedure SQL. Ad esempio, se si dispone di una funzione archiviata come descritto nella tabella seguente, è possibile chiamarla come illustrato nell'esempio di codice.

Nome Parametri Corpo Cartella DocString
Myfunction (myLimit: long) {StormEvents | take myLimit} MyFolder Funzione demo con parametro
  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

Per distinguere le funzioni archiviate e le stored procedure di sistema SQL emulate, chiamare le funzioni archiviate con un riferimento esplicito allo kusto schema. Nell'esempio la funzione archiviata viene chiamata usando kusto.Myfunction.