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