SQL Server系統(tǒng)視圖所包含的視圖有哪些?
以下的文章主要描述的是SQL Server系統(tǒng)視圖所包含的視圖有哪些,在實際操作中SQL Server系統(tǒng)視圖是我們經(jīng)常要用到的,以下的文章就是對其相關(guān)內(nèi)容的具體描述,望大家對其會有更好的了解。
SQL Server系統(tǒng)視圖之目錄視圖
目錄視圖返回 SQL Server 數(shù)據(jù)庫引擎使用的信息。建議您使用目錄視圖這一最常用的目錄元數(shù)據(jù)界面,它可為您提供最有效的方法來獲取、轉(zhuǎn)換并顯示此信息的自定義形式。所有用戶可用目錄元數(shù)據(jù)都通過目錄視圖來顯示。
注意:目錄視圖不包含有關(guān)復(fù)制、備份、數(shù)據(jù)庫維護(hù)計劃或 SQL Server 代理目錄數(shù)據(jù)的信息。
某些目錄視圖從其他目錄視圖繼承行。例如,sys.tables 目錄視圖繼承自 sys.objects 目錄視圖。sys.objects 目錄視圖稱為基本視圖,而 sys.tables 視圖稱為派生視圖。sys.tables 目錄視圖返回專用于表的列,同時還返回 sys.objects 目錄視圖返回的所有列。sys.objects 目錄視圖返回表之外的對象(例如,存儲過程和視圖)的行。創(chuàng)建表之后,表的元數(shù)據(jù)將在兩個視圖中返回。盡管兩個目錄視圖返回有關(guān)表的不同級別的信息,但在此表的元數(shù)據(jù)中只有一個具有一個名稱和一個 object_id 的項。這可以總結(jié)如下:
基本視圖包含列的子集和行的超集。
派生視圖包含列的超集和行的子集。
SQL Server 中的目錄視圖具有如下類別:
更改跟蹤目錄視圖 錯誤消息目錄視圖 CLR 程序集目錄視圖 對象目錄視圖
數(shù)據(jù)庫和文件目錄視圖 分區(qū)函數(shù)目錄視圖 數(shù)據(jù)庫郵件視圖 基于策略的管理視圖
數(shù)據(jù)庫鏡像目錄視圖 源調(diào)控器目錄視圖 數(shù)據(jù)收集器視圖 標(biāo)量類型目錄視圖
數(shù)據(jù)空間 架構(gòu)目錄視圖 端點目錄視圖 安全性目錄視圖 擴(kuò)展事件目錄視圖
Service Broker 目錄視圖 擴(kuò)展屬性目錄視圖 服務(wù)器范圍配置目錄視圖
全文搜索目錄視圖 XML 架構(gòu)(XML 類型系統(tǒng))目錄視圖 鏈接服務(wù)器目錄視圖
SQL Server系統(tǒng)視圖之信息架構(gòu)視圖
信息架構(gòu)視圖是 SQL Server 提供的幾種獲取元數(shù)據(jù)的方法之一。
注意:信息架構(gòu)視圖提供 SQL Server 元數(shù)據(jù)的獨立于系統(tǒng)表的內(nèi)部視圖。盡管已經(jīng)對基礎(chǔ)系統(tǒng)表進(jìn)行了重要的修改,信息架構(gòu)視圖仍然可使應(yīng)用程序正常工作。SQL Server 中包含的信息架構(gòu)視圖符合 INFORMATION_SCHEMA 的 ISO 標(biāo)準(zhǔn)定義
引用當(dāng)前服務(wù)器時,SQL Server 支持三部分命名約定。ISO 標(biāo)準(zhǔn)也支持三部分命名約定。但是,兩種命名約定中使用的名稱并不相同。信息架構(gòu)視圖是在名為 INFORMATION_SCHEMA 的特殊架構(gòu)中定義的。此架構(gòu)包含在每個數(shù)據(jù)庫中。每個信息架構(gòu)視圖均包含存儲在特定數(shù)據(jù)庫中的所有數(shù)據(jù)對象的元數(shù)據(jù)。下表顯示了 SQL Server 名稱和 SQL 標(biāo)準(zhǔn)名稱之間的關(guān)系。
- 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
此外,某些視圖還包含對其他類的數(shù)據(jù)(如字符數(shù)據(jù)或二進(jìn)制數(shù)據(jù))的引用。引用信息架構(gòu)視圖時,必須使用包含 INFORMATION_SCHEMA 架構(gòu)名稱的限定名。例如:
- SELECT TABLE_CATALOG,
- TABLE_SCHEMA,
- TABLE_NAME,
- COLUMN_NAME,
- COLUMN_DEFAULT
- FROM AdventureWorks.INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_NAME = N'Product';
- GO
SQL Server系統(tǒng)視圖之兼容性視圖
SQL Server 早期版本中的許多系統(tǒng)表現(xiàn)在都作為一組視圖實現(xiàn)。這些視圖稱為兼容性視圖,僅用于向后兼容。兼容性視圖公開的元數(shù)據(jù)在 SQL Server 2000 中也提供。但是,兼容性視圖不公開與在 SQL Server 2005 及更高版本中引入的功能有關(guān)的任何元數(shù)據(jù)。
因此,當(dāng)您使用新功能(例如 Service Broker 或分區(qū))時,必須切換到使用目錄視圖。 升級到目錄視圖的另一個原因是,存儲用戶 ID 和類型 ID 的兼容性視圖列可能返回 NULL 或觸發(fā)算術(shù)溢出。這是因為您可以創(chuàng)建超過 32,767 個用戶、組和角色,以及超過 32,767 種數(shù)據(jù)類型。
例如,如果要創(chuàng)建 32,768 個用戶,則可運行以下查詢:SELECT * FROM sys.sysusers。如果 ARITHABORT 設(shè)置為 ON,則查詢會失敗,并出現(xiàn)算術(shù)溢出錯誤。如果 ARITHABORT 設(shè)置為 OFF,則 uid 列返回 NULL。若要避免這些問題,建議您使用新增的目錄視圖,這些視圖可以處理增加的用戶 ID 和類型 ID 數(shù)目。下表列出了會出現(xiàn)此溢出的列。
列名
SQL Server系統(tǒng)視圖之兼容性視圖
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系統(tǒng)視圖時間:2009-10-29 13:48:05來源:網(wǎng)絡(luò) 作者:未知 點擊:322次
--> Title : SQL Server系統(tǒng)視圖
- · 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系統(tǒng)視圖之復(fù)制視圖
這些視圖包含 Microsoft SQL Server 中由復(fù)制使用的信息。 使用這些視圖可以更輕松地訪問復(fù)制系統(tǒng)表中的數(shù)據(jù)。將某個用戶數(shù)據(jù)庫啟用為發(fā)布數(shù)據(jù)庫或訂閱數(shù)據(jù)庫時,便會在該數(shù)據(jù)庫中創(chuàng)建視圖。 從復(fù)制拓?fù)渲袆h除用戶數(shù)據(jù)庫時,便會刪除該數(shù)據(jù)庫中的所有復(fù)制對象。 訪問復(fù)制元數(shù)據(jù)的首選方法是使用復(fù)制存儲過程。
任何用戶都不應(yīng)直接更改系統(tǒng)視圖。
動態(tài)管理視圖和函數(shù)
動態(tài)管理視圖和函數(shù)返回可用于監(jiān)視服務(wù)器實例的運行狀況、診斷故障以及優(yōu)化性能的服務(wù)器狀態(tài)信息。
動態(tài)管理視圖和函數(shù)返回特定于實現(xiàn)的內(nèi)部狀態(tài)數(shù)據(jù)。在未來的 SQL Server 版本中,它們的架構(gòu)和返回的數(shù)據(jù)可能會發(fā)生更改。因此,未來版本中的動態(tài)管理視圖和函數(shù)可能與 SQL Server 2008 中的動態(tài)管理視圖和函數(shù)不兼容
動態(tài)管理視圖和函數(shù)分為兩種類型:
服務(wù)器范圍內(nèi)的動態(tài)管理視圖和函數(shù)。此類型需要具有該服務(wù)器的 VIEW SERVER STATE 權(quán)限。
數(shù)據(jù)庫范圍內(nèi)的動態(tài)管理視圖和函數(shù)。此類型需要具有該數(shù)據(jù)庫的 VIEW DATABASE STATE 權(quán)限。
SQL Server系統(tǒng)視圖之查詢動態(tài)管理視圖
通過使用兩部分、三部分或四部分所組成的名稱,可在 Transact-SQL 語句中引用動態(tài)管理視圖。另一方面,也可使用兩部分或三部分所組成的名稱在 Transact-SQL 語句中引用動態(tài)管理函數(shù)。不能使用只由一部分組成的名稱在 Transact-SQL 語句中引用動態(tài)管理視圖和函數(shù)。
所有動態(tài)管理視圖和函數(shù)都存在于 sys 架構(gòu)中,并遵循 dm_* 命名約定。當(dāng)使用動態(tài)管理視圖或函數(shù)時,必須使用 sys 架構(gòu)作為視圖或函數(shù)名稱的前綴。例如,若要查詢 dm_os_wait_stats 動態(tài)管理視圖,請運行以下查詢:
- SELECT wait_type,
- wait_time_ms
- FROM sys.dm_os_wait_stats;
- GO
所需的權(quán)限
查詢動態(tài)管理視圖或函數(shù)需要對于對象具有 SELECT 權(quán)限以及 VIEW SERVER STATE 或 VIEW DATABASE STATE 權(quán)限。這樣您可以有選擇地限制用戶或登錄名對動態(tài)管理視圖和函數(shù)的訪問。為此,首先在 master 中創(chuàng)建用戶,然后拒絕該用戶對不希望被訪問的動態(tài)管理視圖或函數(shù)的 SELECT 權(quán)限。此后,無論該用戶的數(shù)據(jù)庫上下文如何,用戶都將無法選擇這些動態(tài)管理視圖或函數(shù)。
注意:由于 DENY 的優(yōu)先級高,所以如果用戶被授予 VIEW SERVER STATE 權(quán)限但被拒絕 VIEW
【編輯推薦】