SQL Server系統視圖所包含的視圖有哪些?
以下的文章主要描述的是SQL Server系統視圖所包含的視圖有哪些,在實際操作中SQL Server系統視圖是我們經常要用到的,以下的文章就是對其相關內容的具體描述,望大家對其會有更好的了解。
SQL Server系統視圖之目錄視圖
目錄視圖返回 SQL Server 數據庫引擎使用的信息。建議您使用目錄視圖這一最常用的目錄元數據界面,它可為您提供最有效的方法來獲取、轉換并顯示此信息的自定義形式。所有用戶可用目錄元數據都通過目錄視圖來顯示。
注意:目錄視圖不包含有關復制、備份、數據庫維護計劃或 SQL Server 代理目錄數據的信息。
某些目錄視圖從其他目錄視圖繼承行。例如,sys.tables 目錄視圖繼承自 sys.objects 目錄視圖。sys.objects 目錄視圖稱為基本視圖,而 sys.tables 視圖稱為派生視圖。sys.tables 目錄視圖返回專用于表的列,同時還返回 sys.objects 目錄視圖返回的所有列。sys.objects 目錄視圖返回表之外的對象(例如,存儲過程和視圖)的行。創建表之后,表的元數據將在兩個視圖中返回。盡管兩個目錄視圖返回有關表的不同級別的信息,但在此表的元數據中只有一個具有一個名稱和一個 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
此外,某些視圖還包含對其他類的數據(如字符數據或二進制數據)的引用。引用信息架構視圖時,必須使用包含 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 早期版本中的許多系統表現在都作為一組視圖實現。這些視圖稱為兼容性視圖,僅用于向后兼容。兼容性視圖公開的元數據在 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。若要避免這些問題,建議您使用新增的目錄視圖,這些視圖可以處理增加的用戶 ID 和類型 ID 數目。下表列出了會出現此溢出的列。
列名
SQL Server系統視圖之兼容性視圖
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系統視圖時間:2009-10-29 13:48:05來源:網絡 作者:未知 點擊:322次
--> Title : SQL Server系統視圖
- · sys.server_permissions
- grantor
- sysprotects
- · sys.database_permissions
- · sys.server_permissions
- xusertype
- systypes
- sys.types
- uid
- systypes
- sys.types
- uid
- sysusers
- sys.database_principals
- altuid
- sysusers
- sys.database_principals
- gid
- sysusers
- sys.database_principals
- uid
- syscacheobjects
- sys.dm_exec_plan_attributes
- uid
- sysprocesses
- sys.dm_exec_requests
SQL Server系統視圖之復制視圖
這些視圖包含 Microsoft SQL Server 中由復制使用的信息。 使用這些視圖可以更輕松地訪問復制系統表中的數據。將某個用戶數據庫啟用為發布數據庫或訂閱數據庫時,便會在該數據庫中創建視圖。 從復制拓撲中刪除用戶數據庫時,便會刪除該數據庫中的所有復制對象。 訪問復制元數據的首選方法是使用復制存儲過程。
任何用戶都不應直接更改系統視圖。
動態管理視圖和函數
動態管理視圖和函數返回可用于監視服務器實例的運行狀況、診斷故障以及優化性能的服務器狀態信息。
動態管理視圖和函數返回特定于實現的內部狀態數據。在未來的 SQL Server 版本中,它們的架構和返回的數據可能會發生更改。因此,未來版本中的動態管理視圖和函數可能與 SQL Server 2008 中的動態管理視圖和函數不兼容
動態管理視圖和函數分為兩種類型:
服務器范圍內的動態管理視圖和函數。此類型需要具有該服務器的 VIEW SERVER STATE 權限。
數據庫范圍內的動態管理視圖和函數。此類型需要具有該數據庫的 VIEW DATABASE STATE 權限。
SQL Server系統視圖之查詢動態管理視圖
通過使用兩部分、三部分或四部分所組成的名稱,可在 Transact-SQL 語句中引用動態管理視圖。另一方面,也可使用兩部分或三部分所組成的名稱在 Transact-SQL 語句中引用動態管理函數。不能使用只由一部分組成的名稱在 Transact-SQL 語句中引用動態管理視圖和函數。
所有動態管理視圖和函數都存在于 sys 架構中,并遵循 dm_* 命名約定。當使用動態管理視圖或函數時,必須使用 sys 架構作為視圖或函數名稱的前綴。例如,若要查詢 dm_os_wait_stats 動態管理視圖,請運行以下查詢:
- SELECT wait_type,
- wait_time_ms
- FROM sys.dm_os_wait_stats;
- GO
所需的權限
查詢動態管理視圖或函數需要對于對象具有 SELECT 權限以及 VIEW SERVER STATE 或 VIEW DATABASE STATE 權限。這樣您可以有選擇地限制用戶或登錄名對動態管理視圖和函數的訪問。為此,首先在 master 中創建用戶,然后拒絕該用戶對不希望被訪問的動態管理視圖或函數的 SELECT 權限。此后,無論該用戶的數據庫上下文如何,用戶都將無法選擇這些動態管理視圖或函數。
注意:由于 DENY 的優先級高,所以如果用戶被授予 VIEW SERVER STATE 權限但被拒絕 VIEW
【編輯推薦】