sql-server-2005 - 识别SQL Server 2005中最常用的存储过程变体的最快方法

标签 sql-server-2005 tsql stored-procedures

我正在尝试找出是否有一种方法可以确定被称为“SP”最多的SP的“版本”。我有一个SP,它带有许多不同的参数。我知道SP会引起一些问题,并试图指出问题所在。除了捕获对SP的调用并手动筛选结果之外,是否可以使用探查器按提供的参数对SP调用进行分组?

我不是DB(A/E),而是Web开发人员,因此正确方向的任何提示/观点都将有所帮助。谢谢!

编辑:重新编译SP并没有太大帮助。

最佳答案

这将为您提供前50个最常用的proc以及proc中的语句,从这里开始:Display the 50 most used stored procedures in SQL Server

SELECT TOP 50 * FROM(SELECT COALESCE(OBJECT_NAME(s2.objectid),'Ad-Hoc') AS ProcName,
  execution_count,s2.objectid,
    (SELECT TOP 1 SUBSTRING(s2.TEXT,statement_start_offset / 2+1 ,
      ( (CASE WHEN statement_end_offset = -1
  THEN (LEN(CONVERT(NVARCHAR(MAX),s2.TEXT)) * 2)
ELSE statement_end_offset END)- statement_start_offset) / 2+1)) AS sql_statement,
       last_execution_time
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 ) x
WHERE sql_statement NOT like 'SELECT * FROM(SELECT coalesce(object_name(s2.objectid)%'
and OBJECTPROPERTYEX(x.objectid,'IsProcedure') = 1
and exists (SELECT 1 FROM sys.procedures s
WHERE s.is_ms_shipped = 0
and s.name = x.ProcName )
ORDER BY execution_count DESC

访问该链接仅获取过程名称的查询,但我认为这是一个更好的查询,因为它还为您提供了过程中的语句

关于sql-server-2005 - 识别SQL Server 2005中最常用的存储过程变体的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3505752/

相关文章:

database - Sybase中的游标有多慢

sql-server - 从 Excel 将参数传递到 SQL Server 上的 MS Query 中的临时变量

sql-server - SQL Server 在另一列的上下文中唯一的自动增量列

mysql - SQL查询区别

sql - 是否可以在 Count() 中指定条件?

MYSQL从存储过程中的准备语句获取更新的行数

sql-server-2008 - 使用抢劫/大规模访问存储过程?

asp.net - web.config 中的 SQL 提供程序名称

sql-server-2005 - 如何在SQL Server中使用SQL脚本为日期添加一年?

sql-server - Oracle SYS_CONNECT_BY_PATH 等效查询到 SQL Server