在SQL Server Management Studio中查看特定执行的查询?

问题描述:

继续from this post - 我有更多的问题,我希望有人能帮助我:在SQL Server Management Studio中查看特定执行的查询?

  1. 有没有一种方法来选择特定的数据库和/或表从获得查询或将其添加为列?

  2. 在我的查询中有一些变量显示为@ P1或@GUID。有没有办法获取插入的数据?

我只使用Express来我也无法访问SQL Profiler。

+0

可能重复[如何查看SQL Server Management Studio中执行的查询?](http://*.com/questions/2449634/how-do-i-view-executed-queries-within-sql-server -management-studio) – 2012-02-22 15:26:08

+0

在你之前的问题中,@Mike Mooney似乎回答了这个问题。 – 2012-02-22 15:26:44

sys.dm_exec_sql_text有一个dbid列,所以你可以过滤。比如我把查询从对方的回答,并添加上一个查询的WHERE子句过滤对master

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] 
FROM sys.dm_exec_query_stats AS deqs 
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest 
WHERE dest.dbid = DB_ID('master') 
ORDER BY deqs.last_execution_time DESC 

注意,并不是所有的查询有正确的数据库上下文(或全部数据库上下文)。例如,如果您有连接两个不同数据库中的表的查询,则只会看到一个dbid - 它可能是正在执行的上下文,可能是也可能不是查询中引用的数据库之一。因此,应用筛选器可能实际上隐藏了您感兴趣的查询。

您可以通过从其他DMO(例如sys.dm_exec_cached_planssys.dm_exec_query_plan)挖掘XML来获取参数。如果您已经执行了针对您所捕获的查询的执行计划,那么使用像SQL Sentry Plan Explorer这样的工具将比使用XML自动执行更加容易。

声明:我为SQL Sentry工作,他为社区提供免费工具。

+0

谢谢Aaron.dbid在大多数情况下为NULL,所以我筛选了我可以找到的表名。将看看这个工具看起来是最简单的一个,如果它没有列出这些变量,那么将会看到XML。我还发现了一个可能涉及到的游标状态,所以要注意这个状态。 – 2012-02-27 11:50:49

仅供参考,您知道即使SQL Express不包含配置文件,如果您有权访问它,您可以使用。

+1

这对于OP来说很有用,因为什么?我引用......“我也无法访问SQL Profiler' – MatBailie 2012-02-22 15:37:17

+0

,因为他在另一篇文章中说道:”它看起来像Profiler不包含在Express中。“他可能不知道,即使它不包括在内,但可能会被使用 – Diego 2012-02-22 15:51:26

+0

现在还没有访问它的迭戈,但我会牢记它。 – 2012-02-27 11:55:34