SQL Server 2005 將所有物件中繼資料儲存在系統視圖中。若要取得完整清單 (含文件化、未文件化、使用者自訂),推薦使用 sys.all_objects,因 sys.procedures 與 sp_stored_procedures 會過濾掉部分內部物件。
USE [YourDatabaseName];
GO
SELECT *
FROM sys.all_objects
WHERE [type] IN ('P', 'X', 'PC')
ORDER BY [name];
GO
is_ms_shipped = 0 表示非 Microsoft 發布 (即使用者或第三方建立)。
USE [YourDatabaseName];
GO
SELECT *
FROM sys.all_objects
WHERE [type] IN ('P', 'X', 'PC')
AND [is_ms_shipped] = 0
ORDER BY [name];
GO
| 代碼 | 說明 |
|---|---|
| P | SQL 預存程序 |
| X | 擴充預存程序 |
| PC | CLR (Common Language Runtime) 預存程序 |
| FN | 純量函數 |
| IF | 內嵌資料表值函數 |
| TF | 多重陳述式資料表值函數 |
| V | 檢視表 |
| U | 使用者資料表 |
依需求調整 WHERE 子句中的 [type] 即可查詢函數、檢視表等其他物件。
master 資料庫,新建資料庫時以 master 為範本,故內建程序自動複製至新資料庫。master 中建立;現有資料庫仍需手動部署。Microsoft 不支援直接使用未文件化的系統預存程序/擴充預存程序/函數/檢視表。生產環境使用前務必在測試環境徹底驗證。
此腳本可快速掌握資料庫中所有程式碼物件,適合審計、文件化、重構前評估等場景。