计算数据库中的存储过程?

时间:2009-01-14 16:15:56

标签: sql-server stored-procedures

如何计算数据库中存储过程的数量,并且存储过程太多是不好的做法?

9 个答案:

答案 0 :(得分:12)

Select count(*) from sysobjects where xtype = 'P'

答案 1 :(得分:6)

Select count(1) from information_schema.routines
where routine_type = 'PROCEDURE'

答案 2 :(得分:2)

您可能希望从计数中排除系统存储过程

一种方法是致电:

select count(*) from sysobjects 
    where xtype = 'P'
    and category = 0
    and left(name,2) <> 'sp'

假设您没有为sp

添加前缀

答案 3 :(得分:1)

您需要尽可能多的应用程序。保持程序小而简单是一件好事。

如果您正在使用sql 2005,那么查看proc计数的可视方式是在可编程性下在SSMS中导航到存储过程节点。单击View-Object Explorer Details,右侧将显示对象计数。

答案 4 :(得分:1)

以下是您可以使用的查询:

 select count(*) from sysobjects where xtype='P'

如果要求所有数据库访问都通过SP,那么天空就是限制。

答案 5 :(得分:1)

这将排除使用图表工具时有时会创建的那些(它们将以dt _开头)

SELECT * FROM information_schema.routines
WHERE OBJECTPROPERTY(OBJECT_ID(SPECIFIC_NAME),'IsMSShipped') =1
AND  routine_type = 'PROCEDURE'

答案 6 :(得分:0)

如果你使用它们,那么确实没有“太多”这样的东西。

我有一个开发人员担心他的存储过程在数据库中占用了太多空间,所以我必须实际计算所有存储过程的总SIZE。 Good answer for that here.结果是,存储过程的大小总共占数据库总大小的0.001%。

答案 7 :(得分:0)

您可以使用以下简单查询:

SELECT COUNT(object_id) FROM sys.procedures

答案 8 :(得分:0)

通过该查询,您将获得数据库中所有proc中实际文本的数据量。 结果以字节为单位,因此MB结果(1024 * 1024)的数学运算也是如此。 除以1048576

SELECT SUM(DATALENGTH(sm.definition))/1048576 as 'Total Proc text size'
FROM sys.sql_modules sm
INNER JOIN sys.sysobjects so ON sm.object_id = so.id
WHERE so.type = 'P'