Exécuter des requêtes KQL et des fonctions stockées avec SQL Server émulation

Azure Data Explorer fournit un point de terminaison TDS (Tabular Data Stream) qui vous permet d’interroger des données d’une manière similaire à celle que vous interrogez dans SQL Server. Le point de terminaison prend en charge les versions TDS 7.x et 8.0.

Dans cet article, vous allez apprendre à exécuter des fonctions stockées et des requêtes Langage de requête Kusto (KQL) à partir d’un client compatible SQL.

Notes

Les informations contenues dans cet article s’appliquent à l’exécution d’appels paramétrables via le protocole TDS, également appelé appels RPC.

Pour plus d’informations, consultez la vue d’ensemble sur l’émulation SQL Server dans Azure Data Explorer.

Exécuter des requêtes KQL

La procédure sp_execute_kql stockée SQL peut être utilisée pour exécuter des requêtes KQL , y compris des requêtes paramétrables. La procédure est similaire à la sp_executesql procédure stockée.

Notes

La sp_execute_kql procédure peut uniquement être appelée via un appel RPC, comme indiqué dans l’exemple suivant, et non à partir d’une requête SQL standard.

Le premier paramètre de sp_execute_kql est la requête KQL, et tous les autres paramètres sont traités comme des paramètres de requête. L'exemple suivant montre comment utiliser 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.
      }
    }
  }

Notes

Lors de l’appel sp_execute_kql via TDS, les types de paramètres sont définis par le protocole et n’ont pas besoin d’être déclarés.

Appeler des fonctions stockées

Vous pouvez créer et appeler des fonctions stockées telles que des procédures stockées SQL. Par exemple, si vous avez une fonction stockée comme décrit dans le tableau suivant, vous pouvez l’appeler comme indiqué dans l’exemple de code.

Nom Paramètres Corps Dossier DocString
MyFunction (myLimit : long) {StormEvents | take myLimit} MyFolder Fonction de démonstration avec le paramètre
  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.
      }
    }
  }

Notes

Pour faire la distinction entre les fonctions stockées et les procédures stockées système SQL émulées, appelez les fonctions stockées avec une référence explicite au kusto schéma. Dans l’exemple, la fonction stockée est appelée à l’aide de kusto.Myfunction.