我有一个包含100个存储过程的数据库。我想找到这些中最长的存储过程。我怎么能找到它?
目前我正在使用
Select text,MAX(len(text))
from syscomments
group by text;
但是我无法在其中找到存储过程的名称。
提前致谢:)
答案 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