通过以下查询,我获得了带有SQL语句的十大最昂贵查询的列表。
select top 10 *
from sys.dm_exec_query_stats
cross apply sys.dm_exec_sql_text(sql_handle)
order by max_logical_reads desc
但是我如何提取他们的对象名称?
答案 0 :(得分:1)
在SQL Server 2005 SP3上,我的最后一栏是“text”,就像这个
一样CREATE PROCEDURE dbo.myProc @parameter 1 int...
您可以尝试OBJECT_NAME(objectid)
,但Metadata Visibility可能会阻止这种情况(就像我在我的生产箱上一样)
答案 1 :(得分:1)
如果您正在处理持久对象(即存储过程),那么您可以加入sysobjects
,如下所示:
select top 10 o.name from sys.dm_exec_query_stats a
cross apply sys.dm_exec_sql_text(sql_handle) b
inner join sys.sysobjects o on b.objectid = o.id
order by max_logical_reads desc
答案 2 :(得分:1)
select top 10 OBJECT_NAME(objectid), * from sys.dm_exec_query_stats
cross apply sys.dm_exec_sql_text(sql_handle)
order by max_logical_reads desc
答案 3 :(得分:0)
自动你不能。你必须从[文本]专栏
中解析出来