Delen via


KQL-query's en opgeslagen functies uitvoeren met SQL Server-emulatie

Azure Data Explorer biedt een TDS-eindpunt (Tabular Data Stream) waarmee u query's kunt uitvoeren op gegevens op een manier die vergelijkbaar is met de manier waarop u gegevens in SQL Server opvraagt. Het eindpunt ondersteunt TDS-versies 7.x en 8.0.

In dit artikel leert u hoe u opgeslagen functies uitvoert en KQL-query's (KQL) Kusto-querytaal vanaf een client die compatibel is met SQL.

Notitie

De informatie in dit artikel is van toepassing op het uitvoeren van geparameteriseerde aanroepen via het TDS-protocol, ook wel RPC-aanroepen genoemd.

Zie het overzicht over SQL Server emulatie in Azure Data Explorer voor meer informatie.

KQL-query's uitvoeren

De opgeslagen SQL-procedure sp_execute_kql kan worden gebruikt om KQL-query's uit te voeren, inclusief geparameteriseerde query's. De procedure is vergelijkbaar met de sp_executesql opgeslagen procedure.

Notitie

De sp_execute_kql procedure kan alleen worden aangeroepen via een RPC-aanroep zoals weergegeven in het volgende voorbeeld en niet vanuit een gewone SQL-query.

De eerste parameter van sp_execute_kql is de KQL-query en eventuele andere parameters worden behandeld als queryparameters. In het volgende voorbeeld ziet u hoe u gebruikt 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.
      }
    }
  }

Notitie

Bij het aanroepen sp_execute_kql via TDS worden parametertypen ingesteld door het protocol en hoeven ze niet te worden gedeclareerd.

Opgeslagen functies aanroepen

U kunt opgeslagen functies zoals opgeslagen SQL-procedures maken en aanroepen. Als u bijvoorbeeld een opgeslagen functie hebt zoals beschreven in de volgende tabel, kunt u deze aanroepen zoals wordt weergegeven in het codevoorbeeld.

Name Parameters Hoofdtekst Map DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demo-functie met 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.
      }
    }
  }

Notitie

Als u onderscheid wilt maken tussen opgeslagen functies en geƫmuleerde opgeslagen sql-systeemprocedures, roept u opgeslagen functies aan met een expliciete verwijzing naar het kusto schema. In het voorbeeld wordt de opgeslagen functie aangeroepen met behulp van kusto.Myfunction.