( 一)利用Sql語句查詢數據庫中的全部表html
1.利用sysobjects系統表mysql
1
|
select
*
from
sysobjects
where
xtype=
'U'
|
2,利用sys.tables目錄視圖sql
sys.tables目錄視圖,爲每一個表對象返回一行.數據庫
1
|
select
*
from
sys.tables
|
注意:sys.tables目錄視圖也只有在SQL SERVER2005及以上的版本中才能使用。架構
3,利用存儲過程sp_tables函數
1
|
exec
sp_tables
|
(二)利用Sql語句查詢數據中的全部存儲過程post
1.sysobjects系統表,在數據庫中建立的每一個對象(例如約束、默認值、日誌、規則以及存儲過程)都有對應一行,咱們在該表中篩選出xtype等於P的全部記錄,就爲數據庫中的存儲過程了。url
1
2
|
select
*
from
sysobjects
where
xtype=
'P'
select
*
from
sys.objects
where
type=
'P'
|
2.sys.procedures目錄視圖,每一個存儲過程都會在返回結果集中佔一行.spa
1
|
select
*
from
sys.procedures
|
適用技巧:.net
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 文本