【问题标题】:View specific executed queries within SQL Server Management Studio?在 SQL Server Management Studio 中查看特定执行的查询?
【发布时间】:2012-02-22 15:10:57
【问题描述】:

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

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

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

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

【问题讨论】:

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


【解决方案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 工作。

【讨论】:

  • 谢谢 Aaron.dbid 在大多数情况下为 NULL,所以我过滤了我能找到的表名。将查看该工具,因为它看起来是最简单的工具,如果它没有列出变量,则查看 XML。我还发现了一个可能涉及的光标状态,因此对此进行了研究。
【解决方案2】:

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

【讨论】:

  • 这对 OP 了解是因为什么有用?我引用... I also have no access to SQL Profiler
  • 因为他在另一篇文章中说“看起来 Profiler 不包含在 Express 中。”他可能不知道,即使不包括在内,也可能会被使用
  • 目前无法访问 Diego 但我会记住的。
猜你喜欢
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
相关资源
最近更新 更多