继续from this post - 我还有一些问题希望有人可以帮助我:
有没有办法选择特定的数据库和/或表来获取查询或将其添加为列?
在我的查询中,有一些变量显示为@ P1或@GUID。有没有办法获取插入的数据?
我只使用Express,我也无法访问SQL Profiler。
答案 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_plans
和sys.dm_exec_query_plan
挖掘XML来获取参数。如果您已经为已经捕获的查询制定了执行计划,那么使用像SQL Sentry Plan Explorer这样的工具要比使用自己的大量XML更容易。
免责声明:我为SQL Sentry工作,他为社区提供免费工具。
答案 1 :(得分:0)
只是一个FYI,你知道即使SQL Express不包含个人资料,如果你有权访问它,你也可以使用。