1. 程式人生 > >[轉]SqlServer中Sql檢視儲存過程

[轉]SqlServer中Sql檢視儲存過程

SqlServer中Sql檢視儲存過程

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

1.利用sysobjects系統表

select * from sysobjects where xtype='U'

 2,利用sys.tables目錄檢視

 

sys.tables目錄檢視,為每個表物件返回一行.

?

1

select * from sys.tables

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

3,利用儲存過程sp_tables

 

?

1

exec sp_tables

 

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

1.sysobjects系統表,在資料庫中建立的每個物件(例如約束、預設值、日誌、規則以及儲存過程)都有對應一行,我們在該表中篩選出xtype等於P的所有記錄,就為資料庫中的儲存過程了。

 

?

1

2

select * from sysobjects where xtype='P'

select * from sys.objects

where type='P'

 

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

 

?

1

select * from sys.procedures

 

 

適用技巧:

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

?

1

2

3

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 文字