我正在使用SQL Server 2008,我们需要使用DMV捕获s过程调用并将其存储在表中以进行跟踪。是否可以获取存储过程调用?
答案 0 :(得分:2)
您在寻找sys.dm_exec_procedure_stats
吗? (MSDN Link)
返回缓存存储过程的聚合性能统计信息。 视图为每个缓存的存储过程计划返回一行,并且 只要存储过程仍然存在,行的生命周期 缓存。从缓存中删除存储过程时, 从该视图中删除相应的行。那个时候,一个 性能统计信息SQL跟踪事件的引发类似于 sys.dm_exec_query_stats动态管理。
您应该能够从审计表中选择所需的任何存储过程执行统计信息。如果您希望扩展审计以包括不一定存储过程的即席查询,请考虑改为sys.dm_exec_query_stats。
答案 1 :(得分:2)
也许不完全是你想要的,但它可能是开始。如果您正在查找已运行的查询,无论是否存储过程,您可能需要查看此
select case
when r.statement_end_offset = -1 then
substring(s.text, (r.statement_start_offset / 2), len(s.text))
else
substring(s.text, (r.statement_start_offset / 2), (r.statement_end_offset / 2) - (r.statement_start_offset / 2))
end as statement_text
, q.query_plan
, r.cpu_time
, r.reads as request_reads
, r.writes as request_writes
, r.logical_reads as request_logical_reads
from sys.dm_exec_requests r
cross apply sys.dm_exec_sql_text(r.sql_handle) s
cross apply sys.dm_exec_query_plan(r.plan_handle) q
它为您提供已运行的所有查询。