人人都是 DBA(II)SQL Server 中繼資料

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   ar   color   os   使用   

SQL Server 中維護了一組表用於儲存 SQL Server 中所有的對象、資料類型、約束條件、配置選項、可用資源等資訊,這些資訊稱為中繼資料資訊(Metadata),而這些表稱為系統基礎資料表(System Base Tables)。在這些基礎資料表中,存在於 master 資料庫中的一部分基礎資料表包含系統級範圍的資訊。存在於特定資料庫(也包含 master db)中的基礎資料表包含屬於該特定資料庫的對象和資源資訊。

使用系統管理員身份登入,可以從 sys.objects 中查詢所有的系統基礎資料表。

USE master;SELECT [name] ,type_descFROM sys.objectsWHERE type_desc = ‘SYSTEM_TABLE‘ORDER BY [name];

系統基礎資料表僅在資料庫引擎內部使用,並不是提供的通用功能,所以當變化時可能無法保證相容性。這些以 "sys" 為首碼的表對象,例如 sysobjects, sysindexes, sysusers, sysdatabases 等,實際上是相容視圖(Compatibility Views)。SQL Server 通過提供相容視圖的集合來保持向後相容(Backward Compatibility),使得基於這些相容視圖構建的應用程式不會被破壞。而新增的特性,例如表分區、資源調控等將不會被添加到這些視圖中。

目前,SQL Server 推薦的訪問中繼資料資訊的常規介面是目錄檢視(Catalog Views)。所有的目錄檢視,包括動態管理檢視 DMV(Dynamic Management Views)和相容視圖(Compatibility Views),均存在於 "sys" Schema 中。

SELECT SCHEMA_NAME(schema_id) AS schema_name    ,[name] AS object_name    ,type_descFROM sys.all_objectsWHERE SCHEMA_NAME(schema_id) = ‘sys‘    AND type_desc = ‘VIEW‘ORDER BY object_name;

名稱為 "sys.dm_" 開頭的對象即為動態管理檢視 DMV(Dynamic Management Views)。這些動態管理對象中既有視圖也有函數,但大部分是視圖,所以通常稱為動態管理檢視 DMV(Dynamic Management Views)。DMV 不是基於資料庫檔案的真實的表,而是基於內部資料庫結構的展現。根據 DMV 對象展示的資訊的職責範圍,它們被分成若干個目錄。

  • dm_exec_* 包含與使用者代碼執行和 Session 相關的資訊。
  • dm_os_* 包含低層系統資訊,如 Memory、Locking、Scheduler 等。
  • dm_tran_* 包含事務的細節資訊。
  • dm_io_* 包含網路和磁碟 I/O 活動相關的資訊。
  • dm_db_* 包含資料庫和資料庫物件的細節資訊,如 Index 等。

目錄檢視(Catalog Views)是構建在繼承模型(Inheritance Model)上的,使得對象的通用屬性不必在內部進行重複定義。例如 sys.objects 包含了各種物件類型的通用屬性,而 sys.tables 繼承自 sys.objects,所以首先包含有與 sys.objects 完全相同的列,然後再添加特定物件類型的附加列。

可以在 SQL Server 2008 R2 System Views Map 位置下載目錄檢視的映射關係圖。

如果要查詢某個目錄檢視的定義,可以使用 object_definition 函數或 sp_helptext 進行查詢。

SELECT object_definition (object_id(‘sys.tables‘));
EXEC sp_help ‘sys.tables‘;EXEC sp_helptext ‘sys.tables‘;

訪問 SQL Server 中繼資料資訊還有一些其他方式:

  • 資訊架構視圖(Information Schema Views)
  • 系統函數(System Functions)
  • 系統預存程序(System Stored Procedures)

例如,通過系統函數查詢指定資料庫的恢複模型。

SELECT SERVERPROPERTY(‘Edition‘) AS Edition    ,SERVERPROPERTY(‘EngineEdition‘) AS EngineEdition    ,DATABASEPROPERTYEX(‘msdb‘, ‘Recovery‘) AS RecoveryModel;

目錄檢視(Catalog Views)是訪問 SQL Server 中繼資料資訊的首選介面,其次是系統函數(System Functions)。

 

本系列文章《人人都是 DBA》由 Dennis Gao 發表自部落格園個人技術部落格,未經作者本人同意禁止任何形式的轉載,任何自動或人為的爬蟲轉載或抄襲行為均為耍流氓。

人人都是 DBA(II)SQL Server 中繼資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.