Выполнение запросов KQL и хранимых функций с помощью эмуляции SQL Server
Azure Data Explorer предоставляет конечную точку табличного потока данных (TDS), которая позволяет запрашивать данные таким образом, как вы будете запрашивать данные в SQL Server. Конечная точка поддерживает TDS версии 7.x и 8.0.
В этой статье вы узнаете, как выполнять хранимые функции и язык запросов Kusto (KQL) запросы из совместимого клиента SQL.
Примечание.
Сведения в этой статье относятся к выполнению параметризованных вызовов по протоколу TDS, также известному как вызовы RPC.
Дополнительные сведения см. в обзоре эмуляции SQL Server в Azure Data Explorer.
Выполнение запросов KQL
Хранимая процедура sp_execute_kql
SQL может использоваться для выполнения запросов 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.
}
}
}
Примечание.
При вызове sp_execute_kql
через TDS типы параметров задаются протоколом и не нужно объявлять.
Вызов хранимых функций
Вы можете создавать и вызывать хранимые функции, такие как хранимые процедуры 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
.