SQLServer 2005中列所有儲存過程方法

2021-05-23 02:47:08 字數 2324 閱讀 7984

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

但其實,您可以在一分鐘之內就可以自己列出這些儲存過程、函式和檢視的清單!這份名單甚至包括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];

goselect * from sys.all_objects

where ([type] = 'p' or [type] = 'x' or [type] = 'pc')

order by [name];

go如果您已經安裝了sql server 2005,並使用了所有的預設設定時,你將看到類似一下介面:

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

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

二、使用者自定義儲存過程

在日常使用中,另乙個字段「is_ms_shipped」也經常用來篩選記錄。該欄位用來判斷儲存過程是有微軟發布的 ,如果最初是由微軟發布的,則該字段的值為0; 如果不是由微軟發布的,則該字段的值為1 。

在上面的t-sql語句的基礎上,您只要增加個限制條件「and [ is_ms_shipped ] = 0 」,就可以找到不是微軟建立的儲存過程,這些或許是你或者第三方軟體商訪問資料庫時建立的。如果您只想看看微軟提供的儲存過程,只要將值從0到1即可 。

下面舉例說明,通過乙個t-sql**演示如何獲取只有使用者定義的儲存過程。

use [your_database_name_here];

goselect * from sys.all_objects

where ([type] = 'p' or [type] = 'x' or [type] = 'pc')

and [is_ms_shipped] = 0

order by [name];

go需要注意的是,這個語句的執行結果,因每個人的資料庫的情況不同,而得到不同的記錄列表。情況而異。執行之後,將看到類似下圖的輸出結果。

三、小結

通過上面的例子可以看到,通過少量**,我們就可以很容易地、快速地獲得自己所用的sql server 的儲存過程列表,你不必在乙個個**中搜尋這些儲存過程了。你可能會學到乙個之前自己花了很大精力編寫的複雜指令碼,現在直接用乙個儲存過程就可以實現同樣的效果了。

請記住,當使用乙個不能確定**或結果的儲存過程,應該在測試系統先驗證; 從來沒有使用任何沒有得到徹底的測試在生產環境中。

本文只是告訴各位可以用來獲得sql server 2005中所有儲存過程的方法,但不是鼓勵你隨意使用任何型別的儲存過程,特別是無文件型別的。microsoft一再宣告:微軟對所有無文件的儲存過程,擴充套件儲存過程,函式和檢視,均不提供任何相關的支援。

sql server 2005中的output子句

今天看了下sql server 2005中的output子句,以使您可以從修改語句 insert update delete 中將資料返回到表變數中。帶結果的 dml 的有用方案包括清除和存檔 訊息處理應用程式以及其他方案。這一新的 output 子句的語法為 output into table v...

With在sql server 2005中的用法

with在msdn中的講解,可以參考鏈結 1 2 建立錶值變數型別 3 4create type ty newareagoods as table 5 areaid int notnull,6 goodsid int notnull 7 8 9 創鍵返回今天 的資料 10 根據有 的地區獲取參 11...

sql server 2005中的output子句

今天看了下sql server 2005中的output子句,以使您可以從修改語句 insert update delete 中將資料返回到表變數中。帶結果的 dml 的有用方案包括清除和存檔 訊息處理應用程式以及其他方案。這一新的 output 子句的語法為 output into table v...