如何获取SQL Server 2005/2008中最昂贵的SP的名称

时间:2009-12-17 12:48:49

标签: sql-server

通过以下查询,我获得了带有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

但是我如何提取他们的对象名称?

4 个答案:

答案 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)

自动你不能。你必须从[文本]专栏

中解析出来