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

时间:2012-02-22 15:10:57

标签: sql sql-server sql-server-2008 ssms

继续from this post - 我还有一些问题希望有人可以帮助我:

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

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

  3. 我只使用Express,我也无法访问SQL Profiler。

2 个答案:

答案 0 :(得分:1)

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工作,他为社区提供免费工具。

答案 1 :(得分:0)

只是一个FYI,你知道即使SQL Express不包含个人资料,如果你有权访问它,你也可以使用。