使用 SQL Server 模擬執行 KQL 查詢和預存函式

Azure Data Explorer 提供表格式數據 Stream (TDS) 端點,可讓您以類似在 SQL Server 中查詢數據的方式查詢數據。 端點支援 TDS 7.x 和 8.0 版。

在本文中,您將瞭解如何從 SQL 相容用戶端執行預存函式和 Kusto 查詢語言 (KQL) 查詢。

注意

本文中的資訊適用於透過 TDS 通訊協定執行參數化呼叫,也稱為 RPC 呼叫。

如需詳細資訊,請參閱 Azure Data Explorer 中 SQL Server 仿真的概觀

執行 KQL 查詢

SQL 預存程式 sp_execute_kql 可用來執行 KQL 查詢,包括參數化查詢。 程序類似 sp_executesql 預存程序。

注意

程式 sp_execute_kql 只能透過 RPC 呼叫呼叫,如下列範例所示,而不是從一般 SQL 查詢內呼叫。

的第一個參數 sp_execute_kql 是 KQL 查詢,而任何其他參數都會被視為 查詢參數。 下列範例示範如何使用 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.
      }
    }
  }

注意

透過 TDS 呼叫 sp_execute_kql 時,參數類型是由通訊協定設定,不需要宣告。

呼叫預存函式

您可以建立和呼叫 預存函 式,例如 SQL 預存程式。 例如,如果您有下表中所述的預存函式,您可以呼叫它,如程式代碼範例所示。

名稱 參數 主體 資料夾 DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder 具有參數的示範函式
  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.
      }
    }
  }

注意

若要區分預存函式和仿真的 SQL 系統預存程式,請使用明確參考架構來呼叫預存函 kusto 式。 在此範例中,會使用呼叫 kusto.Myfunction預存函式。