SQL Server系統視圖與目錄視圖
以下的文章主要描述的是SQL Server系統視圖,假如你在實際操作中遇到SQL Server系統視圖況,但是你卻不知道對其如何正確的解決,那么以下的文章對你而言一定是良師益友,以下的相關內容就是對SQL Server系統視圖的介紹,望你能有所收獲。
Title : SQL Server系統視圖
Title : SQL Server系統視圖
Author : wufeng4552
Date : 2009-10-28
目錄視圖
目錄視圖返回 SQL Server 數據庫引擎使用的信息。建議您使用目錄視圖這一最常用的目錄元數據界面,它可為您提供最有效的方法來獲取、轉換并顯示此信息的自定義形式。所有用戶可用目錄元數據都通過目錄視圖來顯示。
注意:目錄SQL Server系統視圖不包含有關復制、備份、數據庫維護計劃或 SQL Server 代理目錄數據的信息。
某些目錄視圖從其他目錄視圖繼承行。例如,sys.tables 目錄視圖繼承自 sys.objects 目錄視圖。sys.objects 目錄視圖稱為基本視圖,而 sys.tables 視圖稱為派生視圖。sys.tables 目錄視圖返回專用于表的列,同時還返回 sys.objects 目錄視圖返回的所有列。
sys.objects 目錄視圖返回表之外的對象(例如,存儲過程和SQL Server系統視圖)的行。創建表之后,表的元數據將在兩個視圖中返回。盡管兩個目錄視圖返回有關表的不同級別的信息,但在此表的元數據中只有一個具有一個名稱和一個 object_id 的項。這可以總結如下:
基本視圖包含列的子集和行的超集。
派生視圖包含列的超集和行的子集。
SQL Server 中的目錄視圖具有如下類別:
更改跟蹤目錄視圖 錯誤消息目錄視圖 CLR 程序集目錄視圖 對象目錄視圖
數據庫和文件目錄視圖 分區函數目錄視圖 數據庫郵件視圖 基于策略的管理視圖
數據庫鏡像目錄視圖 源調控器目錄視圖 數據收集器視圖 標量類型目錄視圖
數據空間 架構目錄視圖 端點目錄視圖 安全性目錄視圖 擴展事件目錄視圖
Service Broker 目錄視圖 擴展屬性目錄視圖 服務器范圍配置目錄視圖
全文搜索目錄視圖 XML 架構(XML 類型系統)目錄視圖 鏈接服務器目錄視圖
信息架構視圖
信息架構視圖是 SQL Server 提供的幾種獲取元數據的方法之一。
注意:信息架構視圖提供 SQL Server 元數據的獨立于系統表的內部SQL Server系統視圖。盡管已經對基礎系統表進行了重要的修改,信息架構視圖仍然可使應用程序正常工作。SQL Server 中包含的信息架構視圖符合 INFORMATION_SCHEMA 的 ISO 標準定義
引用當前服務器時,SQL Server 支持三部分命名約定。ISO 標準也支持三部分命名約定。但是,兩種命名約定中使用的名稱并不相同。信息架構視圖是在名為 INFORMATION_SCHEMA 的特殊架構中定義的。此架構包含在每個數據庫中。每個信息架構視圖均包含存儲在特定數據庫中的所有數據對象的元數據。下表顯示了 SQL Server 名稱和 SQL 標準名稱之間的關系。
- CHECK_CONSTRAINTS ; REFERENTIAL_CONSTRAINTS COLUMN_DOMAIN_USAGE ;
- ROUTINES ; COLUMN_PRIVILEGES ROUTINE_COLUMNS ;COLUMNS ;SCHEMATA ;
- CONSTRAINT_COLUMN_USAGE TABLE_CONSTRAINTS ;CONSTRAINT_TABLE_USAGE ;
- TABLE_PRIVILEGES DOMAIN_CONSTRAINTS ;TABLES ;DOMAINS ;
- VIEW_COLUMN_USAGE KEY_COLUMN_USAGE ;VIEW_TABLE_USAGE ;PARAMETERS ;VIEWS
此外,某些視圖還包含對其他類的數據(如字符數據或二進制數據)的引用。引用信息架構SQL Server系統視圖時,必須使用包含 INFORMATION_SCHEMA 架構名稱的限定名。例如:
- SELECT TABLE_CATALOG,
- TABLE_SCHEMA,
- TABLE_NAME,
- COLUMN_NAME,
- COLUMN_DEFAULT
- FROM AdventureWorks.INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_NAME = N'Product';
- GO
兼容性視圖
SQL Server 早期版本中的許多系統表現在都作為一組視圖實現。這些視圖稱為兼容性視圖,僅用于向后兼容。兼容性視圖公開的元數據在 SQL Server 2000 中也提供。但是,兼容性視圖不公開與在 SQL Server 2005 及更高版本中引入的功能有關的任何元數據。
因此,當您使用新功能(例如 Service Broker 或分區)時,必須切換到使用目錄視圖。 升級到目錄視圖的另一個原因是,存儲用戶 ID 和類型 ID 的兼容性視圖列可能返回 NULL 或觸發算術溢出。這是因為您可以創建超過 32,767 個用戶、組和角色,以及超過 32,767 種數據類型。
例如,如果要創建 32,768 個用戶,則可運行以下查詢:SELECT * FROM sys.sysusers。如果 ARITHABORT 設置為 ON,則查詢會失敗,并出現算術溢出錯誤。如果 ARITHABORT 設置為 OFF,則 uid 列返回 NULL。若要避免這些問題,建議您使用新增的目錄視圖,這些SQL Server系統視圖可以處理增加的用戶 ID 和類型 ID 數目。下表列出了會出現此溢出的列。
列名
兼容性視圖
SQL Server 2005 視圖
- xusertype
- syscolumns
- sys.columns
- usertype
- syscolumns
- sys.columns
- memberuid
- sysmembers
- sys.database_role_members
- groupuid
- sysmembers
- sys.database_role_members
- uid
- sysobjects
- sys.objects
- uid
- sysprotects
- · sys.database_permissions
以上的相關內容就是對SQL Server系統視圖與兼容性視圖 的介紹,望你能有所收獲。
【編輯推薦】