活动监视器中的参数

use*_*269 4 sql-server sql-server-2008-r2 activity-monitor

要查看“最近的昂贵查询”,我使用活动监视器。那里的一些查询带有参数。

有没有办法知道这些值?

小智 5

您可以右键单击您感兴趣的查询并选择Show execution plan在此处输入图片说明

打开执行计划后,只需右键单击空白区域并选择Show Execution Plan XML...。完成后,您将在 XML 中看到一个部分<ParameterList>。在该节点中,它将向您显示ParameterCompiledValue

    <ParameterList>
      <ColumnReference Column="@records" ParameterCompiledValue="(0)" />
      <ColumnReference Column="@traceid" ParameterCompiledValue="(2)" />
    </ParameterList>
  </QueryPlan>
</StmtSimple>
Run Code Online (Sandbox Code Playgroud)

另一种方法是复制执行计划 XML 并将其粘贴到计划资源管理器中并查看Parameters选项卡: 在此处输入图片说明

为书呆子编辑

如果您打开活动监视器,然后进入 tempdb,您将找到活动监视器正在使用的所有临时对象(表和所有)。对于昂贵的查询,它使用对象dbo.#am_get_querystats。您可以打开该过程并查看他们用于提取它的确切查询。很酷。我为活动部分做了这个,这样我就可以获得类似的信息,而不必一直打开活动监视器。

  • 肖恩,你确定这些是*运行*时使用的值吗?我认为它们是 *compile-time* 值。 (3认同)

Han*_*non 3

有没有办法知道这些值?

不,不是直接来自活动监视器。

您需要使用服务器端跟踪或使用扩展事件来捕获这些详细信息。

有关如何创建跟踪来收集该数据的详细信息,请参阅此问题的详细信息和答案。