在SQL Server Management Studio中查看特定执行的查询?
继续from this post - 我有更多的问题,我希望有人能帮助我:在SQL Server Management Studio中查看特定执行的查询?
有没有一种方法来选择特定的数据库和/或表从获得查询或将其添加为列?
在我的查询中有一些变量显示为@ P1或@GUID。有没有办法获取插入的数据?
我只使用Express来我也无法访问SQL Profiler。
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_plans
和sys.dm_exec_query_plan
)挖掘XML来获取参数。如果您已经执行了针对您所捕获的查询的执行计划,那么使用像SQL Sentry Plan Explorer这样的工具将比使用XML自动执行更加容易。
声明:我为SQL Sentry工作,他为社区提供免费工具。
谢谢Aaron.dbid在大多数情况下为NULL,所以我筛选了我可以找到的表名。将看看这个工具看起来是最简单的一个,如果它没有列出这些变量,那么将会看到XML。我还发现了一个可能涉及到的游标状态,所以要注意这个状态。 – 2012-02-27 11:50:49
可能重复[如何查看SQL Server Management Studio中执行的查询?](http://stackoverflow.com/questions/2449634/how-do-i-view-executed-queries-within-sql-server -management-studio) – 2012-02-22 15:26:08
在你之前的问题中,@Mike Mooney似乎回答了这个问题。 – 2012-02-22 15:26:44