使用 SQL Server 仿真运行 KQL 查询和存储函数
Azure 数据资源管理器提供表格格式数据流 (TDS) 终结点,使你能够以类似于在 SQL Server 中查询数据的方式查询数据。 终结点支持 TDS 版本 7.x 和 8.0。
本文介绍如何从 SQL 兼容客户端运行存储函数和 Kusto 查询语言 (KQL) 查询。
注意
本文中的信息适用于通过 TDS 协议运行参数化调用,也称为 RPC 调用。
有关详细信息,请参阅 Azure 数据资源管理器中的 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 存储过程一样创建和调用存储函数。 例如,如果你有下表中描述的存储函数,则可以按照代码示例所示调用它。
名称 | parameters | 正文 | 文件夹 | 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
来调用存储函数。