查询列出SQL Server存储过程以及每个过程的代码行

前端之家收集整理的这篇文章主要介绍了查询列出SQL Server存储过程以及每个过程的代码行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要一个查询,返回数据库中所有(用户)存储过程的列表,其名称与每个代码的行数.

sp_name     lines_of_code
--------    -------------
DoStuff1    120
DoStuff2    50
DoStuff3    30

任何想法如何做到这一点?

解决方法

select t.sp_name,sum(t.lines_of_code) - 1 as lines_ofcode,t.type_desc
from
(
    select o.name as sp_name,(len(c.text) - len(replace(c.text,char(10),''))) as lines_of_code,case when o.xtype = 'P' then 'Stored Procedure'
    when o.xtype in ('FN','IF','TF') then 'Function'
    end as type_desc
    from sysobjects o
    inner join syscomments c
    on c.id = o.id
    where o.xtype in ('P','FN','TF')
    and o.category = 0
    and o.name not in ('fn_diagramobjects','sp_alterdiagram','sp_creatediagram','sp_dropdiagram','sp_helpdiagramdefinition','sp_helpdiagrams','sp_renamediagram','sp_upgraddiagrams','sysdiagrams')
) t
group by t.sp_name,t.type_desc
order by 1

编辑,所以它现在也应该在sql Server 2000-2008中工作,并排除与数据库图相关的sprocs和函数(看起来像用户创建的对象).

猜你在找的MsSQL相关文章