SQL Server エミュレーションを使用して KQL クエリとストアド関数を実行する

Azure Data Explorer には、SQL Server内のデータに対してクエリを実行する方法と同様の方法でデータのクエリを実行できる表形式データ Stream (TDS) エンドポイントが用意されています。 エンドポイントでは、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 、通常の SQL クエリ内からではなく、次の例に示すように RPC 呼び出しを介してのみ呼び出すことができます。

の最初の 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.
      }
    }
  }

Note

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

Note

ストアド関数とエミュレートされた SQL システム ストアド プロシージャを区別するには、スキーマへの明示的な参照を使用してストアド関数を kusto 呼び出します。 この例では、 を使用して kusto.Myfunctionストアド関数を呼び出しています。