首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 系統表完整目錄與核心欄位說明

     編輯:關於SqlServer

系統表分類總覽

SQL Server 2005 系統表分為「僅存在 master 資料庫的伺服器層級表」與「每個資料庫都擁有的資料庫層級表」。注意:現代版本建議使用系統檢視表(sys.*)替代直接查詢系統表,相容性與安全性更佳。

伺服器層級系統表(master 資料庫)

系統表用途關鍵欄位範例
sysaltfiles所有資料庫檔案資訊fileid, groupid, size, maxsize, growth, dbid, name, filename
syscharsets字元集與排序規則type, id, csid, status, name, definition
sysconfigures伺服器配置選項config, value, minimum, maximum, run_value
syscurconfigs目前生效配置config, value
sysdatabases伺服器上所有資料庫dbid, name, sid, mode, status, crdate, filename
syslanguages支援語言langid, dateformat, datefirst, name, alias
syslogins登入帳號資訊sid, name, password, dbname, language, isntname, isntgroup
sysoledbusers連結伺服器登入對應rmtsrvid, loginsid, rmtuser, rmtpassword
sysprocesses目前執行緒/連線spid, kpid, blocked, waittype, lastwaittype, cpu, physical_io, login_time, dbid, uid, hostname, program_name, loginame
sysremotelogins遠端登入對應remoteserverid, sid, remoteusername

資料庫層級系統表(每個資料庫)

系統表用途關鍵欄位範例
syscolumns資料表/檢視表欄位id, name, xtype, length, prec, scale, isnullable, colid, cdefault, domain
sysconstraints限制條件id, colid, status, constid
sysfilegroups檔案群組groupid, groupname, status
sysfiles資料庫檔案fileid, groupid, size, maxsize, growth, status, name, filename
sysforeignkeys外鍵關聯constid, fkeyid, rkeyid, fkey, rkey, keyno
sysindexes索引與統計資料id, indid, name, first, root, dpages, reserved, used, rowcnt, status
sysmembers角色成員memberuid, groupuid
sysobjects所有資料庫物件id, name, xtype, uid, info, status, crdate, deltrig, instrig, updtrig, schemaver
syspermissions權限設定id, grantee, grantor, type, action, protecttype, columns, grantable
systypes使用者定義資料型別uid, name, xtype, length, prec, scale, tdefault, domain
sysusers資料庫使用者uid, gid, sid, name, hasdbaccess, islogin, isntname, isntgroup

核心系統表詳細欄位說明:sysaltfiles

儲存所有資料庫檔案的實體路徑與大小資訊,僅存在 master。

欄位型別說明
fileidsmallint資料庫內唯一檔案 ID
groupidsmallint檔案群組 ID
sizeint檔案大小(8 KB 頁數)
maxsizeint最大檔案大小(頁數),0=不成長,-1=成長至磁碟滿
growthint成長增量(頁數或百分比,視 status 而定)
statusint內部狀態旗標
perfint保留欄位
dbidsmallint所屬資料庫 ID
namenchar(128)邏輯檔案名稱
filenamenchar(260)實體完整路徑

核心系統表詳細欄位說明:syscharsets

字元集(type=1001)與排序規則(type=2001)定義。

欄位型別說明
typesmallint1001=字元集,2001=排序規則
idtinyint唯一 ID(1-240 保留給系統)
csidtinyint排序規則所基於的字元集 ID
statussmallint內部狀態位
namesysname唯一名稱
descriptionnvarchar(255)描述
binarydefinitionvarbinary(255)內部使用
definitionimage內部定義結構

現代替代方案:系統檢視表

建議使用 sys.* 目錄檢視表,例如:

  • sys.databases 取代 sysdatabases
  • sys.tables, sys.columns, sys.indexes 取代 sysobjects, syscolumns, sysindexes
  • sys.server_principals, sys.database_principals 取代 syslogins, sysusers
  • sys.master_files 取代 sysaltfiles

系統檢視表提供穩定介面、權限控管、版本相容性,且支援中繼資料函數(OBJECT_ID, DB_ID 等)。

實務查詢範例

-- 查詢所有資料庫大小與檔案路徑
SELECT db_name(database_id) AS db_name,
       type_desc,
       name AS logical_name,
       physical_name,
       size * 8 / 1024.0 AS size_mb
FROM sys.master_files
ORDER BY db_name, type_desc;

-- 查詢資料表索引碎片程度
SELECT OBJECT_NAME(ips.object_id) AS table_name,
       i.name AS index_name,
       ips.index_type_desc,
       ips.avg_fragmentation_in_percent,
       ips.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') ips
JOIN sys.indexes i ON ips.object_id = i.object_id AND ips.index_id = i.index_id
WHERE ips.page_count > 1000
ORDER BY ips.avg_fragmentation_in_percent DESC;

熟悉系統表結構有助於深度診斷,但日常管理請優先使用系統檢視表與 DMV/DMF。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved