Partager via


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

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 à la façon dont vous interrogeriez des données dans SQL Server. Le point de terminaison prend en charge TDS versions 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.

Remarque

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

Pour plus d’informations, consultez la vue d’ensemble de 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 , notamment des requêtes paramétrables. La procédure est similaire à la sp_executesql procédure stockée.

Remarque

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

Remarque

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 Demo function with parameter
  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.
      }
    }
  }

Remarque

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 kusto.Myfunctionde .