相信很多人都很奇怪SQLServer2005的系統(tǒng)表到哪去了,在使用SQL2000的日子里,不幸的SQL Server 2000數(shù)據(jù)庫管理員們,需要瀏覽深?yuàn)W的系統(tǒng)表,這是這項(xiàng)使用數(shù)據(jù)庫管理系統(tǒng)的工作中最糟糕的一部分。
SQL Server 2005中的系統(tǒng)數(shù)據(jù)現(xiàn)在存儲(chǔ)在隱藏的“資源”表中,這個(gè)表只能被服務(wù)器自身直接訪問。低級(jí)用戶(和數(shù)據(jù)庫管理員)必須使用新的一系列的分類視圖,這些視圖顯示了從各種我們看不到也不能調(diào)用的隱藏表和各種隱藏函數(shù)中獲得的數(shù)據(jù)。以前版本的SQL Server 中的系統(tǒng)表現(xiàn)在作為一系列所謂的(也相當(dāng)正確的)“兼容視圖”的形式實(shí)現(xiàn)。
分類視圖和它們的伙伴,動(dòng)態(tài)管理視圖(下面進(jìn)行解釋),代表了一種處理元數(shù)據(jù)的方式,這些元數(shù)據(jù)是完全重新設(shè)計(jì)和重新思考出來的。沒有了那些只會(huì)給數(shù)據(jù)庫管理員一些底層數(shù)據(jù)的微小感覺的神秘的表,現(xiàn)在的SQL Server提供了豐富的資源:SQL Server 2005中有超過200個(gè)分類和管理視圖,取代了以前版本中大約50個(gè)的系統(tǒng)表。
所有這些視圖都可以在系統(tǒng)計(jì)劃中找到。(計(jì)劃是在SQL Server 2005中大大擴(kuò)展了的安全特性。但是這是另一篇貼士的話題。)要看到可用視圖的完全列表,SQL Server Management Studio擴(kuò)展了所有數(shù)據(jù)庫的系統(tǒng)視圖樹。或者通過T-SQL 從視圖自身選擇一個(gè)列表,并找出友好的易于理解的名字:
sys.all_views有所有的視圖
sys.tables包含有所有表的信息
sys.columns包含數(shù)據(jù)庫中所有的列的屬性
等等,是不是比SQL2000系統(tǒng)表要更能讓人接受?
所以現(xiàn)在我們可以用一條這樣的語句來查詢某個(gè)表T_TT的所有字段的信息
select * from sys.columns,sys.tables where sys.tables.object_id=sys.columns.object_id and sys.tables.name='T_TT'
