Master 資料庫系統表 (伺服器層級)
| 系統表 | 功能說明 |
sysaltfiles | 保存所有資料庫的檔案資訊 (邏輯名、實體路徑、大小、成長設定) |
syscharsets | 字元集與排序順序定義 |
sysconfigures | 伺服器配置選項 (對應 sp_configure) |
syscurconfigs | 目前生效的配置選項值 |
sysdatabases | 伺服器上所有資料庫的基本屬性 |
syslanguages | 支援的語言清單 |
syslogins | 伺服器登入帳戶資訊 (SID、密碼雜湊、預設資料庫、語言等) |
sysoledbusers | 連結伺服器遠端登入對應資訊 |
sysprocesses | 目前所有處理序/連線狀態 (SPID、狀態、命令、CPU、I/O、阻塞、SQL 文字) |
sysremotelogins | 遠端伺服器登入對應 |
各使用者資料庫系統表 (資料庫層級)
| 系統表 | 功能說明 |
syscolumns | 所有資料表/檢視的欄位定義 (名稱、型別、長度、精度、標度、可否為 NULL、預設值、身分識別屬性) |
sysconstraints | 約束定義 (主鍵、外鍵、CHECK、DEFAULT、UNIQUE) |
sysfilegroups | 檔案群組資訊 |
sysfiles | 資料庫檔案資訊 (邏輯名、實體路徑、大小、最大值、檔案成長) |
sysforeignkeys | 外鍵關係詳細定義 (參考資料表/欄位、更新/刪除規則) |
sysindexes | 索引/統計資料/堆積/資料分割資訊 (索引鍵、頁數、資料列數、填滿因子、統計資料日期) |
sysmembers | 資料庫角色成員對應 (角色與用戶/群組關係) |
sysobjects | 所有資料庫物件 (資料表、檢視、預存程序、觸發器、規則、預設值、檢查約束等) |
syspermissions | 物件權限記錄 (GRANT/DENY/REVOKE、授權者/被授權者、資料行級權限) |
systypes | 系統與使用者定義資料型別 |
sysusers | 資料庫使用者與角色 (SID、名稱、登入對應、群組隸屬) |
現代化替代:目錄檢視對照 (SQL Server 2005+ 強烈建議)
| 舊系統表 | 目錄檢視 / DMV | 優勢 |
sysobjects | sys.objects, sys.tables, sys.views, sys.procedures | 類型欄位明確、支援篩選、效能佳 |
syscolumns | sys.columns | 包含計算欄位、稀疏欄位等新屬性 |
sysindexes | sys.indexes, sys.partitions, sys.allocation_units | 正規化設計、支援分割資料表、記憶體最佳化 |
sysusers/syslogins | sys.database_principals, sys.server_principals | 統一主體模型、支援含資料庫用戶、應用程式角色 |
sysprocesses | sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_exec_connections | DMV 架構、豐富等待統計、查詢計畫關聯 |
sysdatabases | sys.databases | 包含資料庫鏡像、可用性群組、加密等新屬性 |
快速查詢範例
列出所有使用者資料表及欄位數
SELECT
o.name AS TableName,
COUNT(c.id) AS ColumnCount
FROM sysobjects o
JOIN syscolumns c ON o.id = c.id
WHERE o.xtype = 'U'
GROUP BY o.name
ORDER BY ColumnCount DESC;
檢視資料庫檔案空間使用
SELECT
name AS LogicalName,
filename AS PhysicalPath,
size/128.0 AS SizeMB,
maxsize/128.0 AS MaxSizeMB,
growth/128.0 AS GrowthMB
FROM sysfiles;
熟悉系統表結構是深入理解 SQL Server 內部運作、撰寫高效管理腳本的基礎。新專案請優先使用目錄檢視與 DMV。