SQL Server 查询存储是否捕获参数值?

Tod*_*ier 11 performance sql-server sql-server-2016 query-store query-performance

SQL Server 2016 中引入的新查询存储很棒。它很好地替代了我以前使用旧的 Profiler 工具所做的大部分工作。但是,我还没有找到一种方法来捕获与对它嗅出的高资源消耗查询的单个调用相关联的参数值。这可能吗?

我知道查询存储更多地处理聚合数据而不是单个调用,所以我怀疑我在这里可能不走运。当我发现一个缓慢的查询时,我发现将参数与其最慢的调用之一关联起来也很方便进行故障排除。我想知道如何使用最新最好的工具来做到这一点。(我不会错过使用 Profiler!)

在安全方面,查询存储比 Profiler 更容易锁定吗?我认为它需要从某个级别的单个调用中捕获数据才能计算聚合。只是不确定它是否存储了其中的任何一个。

Han*_*non 12

根据计划,您应该能够ParameterCompiledValue通过检查保存在sys.query_store_plan.

该列表通常包含在 xml 计划的末尾,并且可以在ParameterList节点中找到。

这并不提供每次执行的价值,但确实让您了解计划是用什么编译的。

如果您确实需要获取每次执行的值,您可以创建一个扩展事件会话来收集详细信息。