系統視圖(sys.*、INFORMATION_SCHEMA.*)是查詢中繼資料的標準介面。本文探討系統視圖**定義於何處**、**資料從何而來**,並展示三大實用查詢場景(找欄位、看程式碼、格式化輸出),揭秘 Resource 隱藏資料庫。
每個資料庫(含 master、使用者資料庫)的「系統視圖」資料夾下,**名稱、結構完全相同**。

SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, ORDINAL_POSITION, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'state';

回傳:表名、欄位名、型別、順序、預設值——**資料字典即時查詢**。
SELECT definition FROM sys.sql_modules WHERE object_id = OBJECT_ID('CategoryInsert');

definition 為 NVARCHAR(MAX) 完整定義,無長度截斷。
sys.sql_modules 輸出無格式化,如何獲得美觀程式碼?EXEC sp_helptext 'CategoryInsert';

sp_helptext 逐行輸出保留縮排換行,**最適合人工閱讀/複製**。
使用者資料庫中**未建立**這些視圖,但可直接查詢。真相:定義儲於 **Resource 資料庫**(唯讀、隱藏、隨 SQL Server 服務啟動掛載)。
驗證步驟:
<安裝路徑>\MSSQL\Binn\mssqlsystemresource.mdf/ldf
Resource_Copy。


視圖為虛表,**基底表隱藏於系統目錄**。使用者資料庫 sys.objects 看似空空如也:

但查詢 sys.objects 卻能看到資料——**實際讀取 Resource 中的基底系統表**(sys.sysschobjs 等內部表),並依當前資料庫安全性過濾。

| 分類 | 代表視圖 | 用途 |
|---|---|---|
| 目錄/結構描述 | sys.objects, sys.columns, sys.indexes, sys.tables | 物件結構查詢 |
| 執行狀態/DMV | sys.dm_exec_*, sys.dm_os_*, sys.dm_db_* | 效能監控、診斷 |
| 安全性 | sys.database_principals, sys.server_permissions | 權限稽核 |
| 標準資訊綱目 | INFORMATION_SCHEMA.* | ANSI 標準、跨資料庫可攜 |
系統視圖定義於 **Resource 隱藏資料庫**,資料來源為**內部基底系統表**,透過視圖層提供安全、標準、版本穩定的中繼資料介面。善用 INFORMATION_SCHEMA.COLUMNS 找欄位、sys.sql_modules 看定義、sp_helptext 格式化,是 DBA/開發日常必備技能。