如何找到最长存储过程的名称?

时间:2010-09-02 15:19:14

标签: sql-server sql-server-2008

我有一个包含100个存储过程的数据库。我想找到这些中最长的存储过程。我怎么能找到它?

目前我正在使用

Select text,MAX(len(text)) from syscomments group by text;

但是我无法在其中找到存储过程的名称。

提前致谢:)

1 个答案:

答案 0 :(得分:10)

sys.comments将长定义划分为4000个字符的块。使用sys.sql_modules可以避免此问题。

SELECT TOP 1 
    OBJECT_NAME(object_id) AS Name, 
    LEN(definition) AS Length, 
    CAST((SELECT definition AS [processing-instruction(x)] FOR XML PATH('')) AS XML) AS Definition
FROM sys.sql_modules
WHERE OBJECTPROPERTY(object_id, 'IsProcedure')=1
ORDER BY LEN(definition) DESC