2009-01-14 28 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