2009-01-14 65 views

回答

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

使用“系统对象“直接被折磨 - 你最好使用”sys“。或INFORMATION_SCHEMA目录视图。 – 2009-01-14 20:03:49

+0

我不知道,额外的`INFORMATION_SCHEMA`或`SYS`的按键让我皱眉,因此被f upon。与它有什么大不了的@marc_s? – 2016-08-09 12:33:21

1

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

如果您使用的是sql 2005,那么查看您的proc count的可视方式是在可编程性下在SSMS中导航到您的存储过程节点。点击查看 - 对象资源管理器详细信息,对象数量将显示在右侧。从系统对象,其中的xtype =“P”

如果所有的数据库访问的任务是通过SP的,那么天空才是极限

1

SELECT COUNT(*)。

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

你可能想从您的计数排除系统存储过程

一种方法是调用:

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

这是假设你不与SP

前缀你的程序
+0

系统存储过程通常以'sp_'为前缀,尽管我已经看到生产系统的'sp_'是用于用户定义的特效的前缀:-( – 2009-01-14 16:52:12

0

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

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

1

这将排除使用绘图工具时有时会产生的那些(他们将与DT_开始)

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

下面是一个简单的查询,你可以使用:

SELECT COUNT(object_id) FROM sys.procedures