程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 在SQL Server 2005中如何列出所有存儲過程

在SQL Server 2005中如何列出所有存儲過程

編輯:關於SqlServer

為了查找這些存儲過程,你可以花時間在互聯網搜索,查看一些你還未知道的存儲過程,也許在一兩個小時您可能會發現你想要...也許你很幸運的找到,其他人在他們的文章中列出所有的存儲過程 ,函數和視圖,並介紹了如何使用這些存儲過程。

但其實,您可以在一分鐘之內就可以自己列出這些存儲過程、函數和視圖的清單!這份名單甚至包括SQL Server中所有無文檔的存儲過程。通過這個清單,你就可以確定你所想要找的存儲過程。

SQL Server 2005實際上保存了所有存儲過程的列表,包括有文檔的、無文檔的,甚至是用戶自定義的!所有這些信息,都包含在系統表中。最簡單的方法是使用一個系統視圖,特別是sys.all_objects這個視圖來查閱。

您也可以使用sys.procedures目錄視圖,但我的測試結果,發現這個視圖會過濾掉一些儲存過程。

您也可以使用系統儲存過程sp_stored_procedures返回當前環境中的存儲過程列表 ,但這個存儲過程同樣也限制了存儲過程返回值。

通過對比,我覺得:如果想獲得SQL Server 2005中所有的儲存程序,建議使用sys.all_objects這個系統視圖,sys.Procedures或sp_Stored_Procedures這兩個視圖會因為某些未知原因,過濾掉一些內容,造成信息不全。

存儲過程信息是存儲在各自用戶數據庫中的系統表中的。SQL Server 2005保存了存儲過程的唯一標識信息,如存儲過程的名稱、創建時間、修改時間、是否來自微軟等等。

如何確保所有的用戶數據庫都能夠自動創建這些存儲過程呢?

當SQL Server部署完成後,微軟提供的存儲過程,是保存在master數據庫中的。當您新建一個數據庫時,master數據庫將作為模板數據庫,因此,master數據庫中的所有存儲過程將自動創建到你所新建的數據庫中。

如果你想創建一個存儲過程,並希望能夠自動分發到所有的數據庫中,你可以在master數據庫中建立該存儲過程,這樣之後新創建的數據庫中,將自動包含你新建的這個存儲過程;但對於之前已經存在的數據庫,你仍需要到每個數據庫中手動創建這個存儲過程。

一、列出所有的儲存過程

以下代碼列出了SQL Server 2005中存在的所有儲存過程。

USE [your_database_name_here];
GO
SELECT * FROM sys.all_objects
WHERE ([type] = 'P' OR [type] = 'X' OR [type] = 'PC')
ORDER BY [name];
GO

如果您已經安裝了SQL Server 2005,並使用了所有的默認設置時,你將看到類似一下界面:

圖1:列出所有的存儲過程

上面這個命令,通過Type對象進行過濾。從下表中,你可以確定自己所需的對象的類型,然後根據你的實際情況,調整WHERE子句中的類型。

此列表僅列出了意見,職能和程序。

表1: type字段的類別及對象返回類型

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved