我们正在跟踪并将我们的SQL Server程序超时发送到Elasticsearch,因此我们可以在Kibana中对它们进行可视化以发现问题。
我们的一些SQL查询已参数化并使用sp_executesql
。
是否可以从查询中提取其参数及其值?
例如:
EXEC sp_executesql N'EXEC dbo.MySearchProcedure @UserId=@p0,@SearchPhrase=@p1'
, N'@p0 int,@p1 nvarchar(max)'
, @p0 = 11111
, @p1 = N'denmark';
从中得到这个结果:
{
"Procedure": "dbo.MySearchProcedure",
"Statement": "exec sp_executesql N'exec Search.GetAnalysisResultsListTextSearch @SubscriberId=@p0,@SearchTerms=@p1,@SortType=@p2',N'@p0 int,@p1 nvarchar(max) ,@p2 int',@p0=47594,@p1=N'denmark',@p2=0",
"Parameters": {
"UserId": 11111,
"SearchPhrase": "denmark"
}
}
答案 0 :(得分:1)
听起来像ruby {}过滤器的工作。首先,在查询中找到所有key = value对(@ userid = @ p0,可能使用ruby的scan功能),然后找到分配(@ p0 = 1234,再次使用scan),然后创建一个新字段将两者结合起来(userid = 1234)。在红宝石过滤器中:
event['userid'] = '1234'