SqlServer中Sql查看存儲過程


( 一)利用Sql語句查詢數據庫中的所有表

1.利用sysobjects系統表

select * from sysobjects where xtype='U'

 2,利用sys.tables目錄視圖

sys.tables目錄視圖,為每個表對象返回一行.

select * from sys.tables

 注意:sys.tables目錄視圖也只有在SQL SERVER2005及以上的版本中才能使用。

3,利用存儲過程sp_tables

 

 exec sp_tables

 

 (二)利用Sql語句查詢數據中的所有存儲過程

1.sysobjects系統表,在數據庫中創建的每個對象(例如約束、默認值、日志、規則以及存儲過程)都有對應一行,我們在該表中篩選出xtype等於P的所有記錄,就為數據庫中的存儲過程了。

 

select * from sysobjects where xtype='P'
select * from sys.objects where type='P'

 

  2.sys.procedures目錄視圖,每個存儲過程都會在返回結果集中占一行.

 

select * from sys.procedures

 

 

適用技巧:

Sql Server查看所有存儲過程或視圖的位置及內容

select a.name,a.[type],b.[definition] from sys.all_objects a,sys.sql_modules b 
where a.is_ms_shipped=0 and a.object_id = b.object_id and a.[type] in ('P','V','AF') 
order by a.[name] asc

 

從上面的SQL語句可以看出,主要用到了兩個 sys.all_objects 和 sys.sql_modules 兩個系統存儲過程,

其中 sys.all_objects 是 sql server 2012 版本中的系統視圖,在 更早期的 sql server 版本中,

應該用 sys.objects,同時,sys.objects 在 2012 中也是可以用的,只不過考慮到后續兼容性,在新版本中,用新的 name 還是比較好。

 

Sys.All_Objects(sys.objects)

該視圖 很出名,是經常使用到的,主要是:顯示所有架構范圍內的用戶定義對象和系統對象的 UNION

  主要字段:  

1. Name:對象名

2. Object_id:對象標識號,在數據中是唯一的

3. Principal_id :架構所有者ID

4. Parent_object_id:此對象所屬對象的ID,0 = 不是子對象

5. Type:對象類型,常用的類型有, AF = 聚合函數 P = SQL 存儲過程  V = 視圖  TT = 表類型   U = 表(用戶定義類型)

6. Type_desc:對象類型的說明

7. Create_date / Modify_date :創建日期 / 修改日期

8. is_ms_shipped:是否為 內部 SQL Server 組建所創建的對象,常用來判斷 是否是 系統內置或用戶自定義 的對象

 

 

Sys.Sql_Modules

對每個 SQL 語言定義的模塊對象都返回一行。 類型為 P、RF、V、TR、FN、IF、TF 和 R 的對象均有關聯的 SQL 模塊。

主要字段:

1. Object_id:對象標識號,在數據中是唯一的

2. Definition:用於定義此模塊的 SQL 文本

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM