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

SQL Server 常用系統表完整速查表 (依資料庫分類)

     編輯:關於SqlServer

Master 資料庫 (伺服器層級中繼資料)

系統表/檢視用途說明
sysaltfiles所有資料庫檔案資訊 (名稱、路徑、大小、成長設定)
syscharsets字元集與排序規則定義
sysconfigures伺服器設定選項 (sp_configure 對應)
syscurconfigs目前生效的設定值
sysdatabases伺服器上所有資料庫基本資訊
syslanguages支援的語言清單
syslogins伺服器登入帳戶資訊 (SID、密碼雜湊、預設資料庫等)
sysoledbusers連結伺服器遠端登入對應
sysprocesses目前所有執行緒/連線狀態 (SPID、SQL 文字、等待型別、阻塞鏈)
sysremotelogins遠端伺服器登入對應

各使用者資料庫 (資料庫層級中繼資料)

系統表/檢視用途說明
syscolumns所有資料表/檢視的欄位定義 (名稱、型別、長度、精度、預設值、身分識別屬性)
sysconstraints約束定義 (PK、FK、CHECK、DEFAULT、UNIQUE)
sysfilegroups檔案群組資訊
sysfiles資料庫檔案資訊 (邏輯名、實體路徑、大小、最大值、成長)
sysforeignkeys外鍵關係詳細定義
sysindexes索引/統計資料/資料分割資訊 (頁數、資料列數、填滿因子)
sysmembers資料庫角色成員對應
sysobjects所有資料庫物件 (資料表、檢視、預存程序、觸發器、規則、預設值等)
syspermissions物件權限 (GRANT/DENY/REVOKE) 記錄
systypes系統與使用者定義資料型別
sysusers資料庫使用者與角色 (SID、名稱、群組隸屬)

現代化查詢建議 (SQL Server 2005+)

系統表為相容性保留,**強烈建議改用目錄檢視** 以獲得穩定介面、更豐富資訊與效能:

舊系統表建議替代目錄檢視
sysobjectssys.objects, sys.tables, sys.views, sys.procedures
syscolumnssys.columns
sysindexessys.indexes, sys.partitions, sys.allocation_units
sysusers / sysloginssys.database_principals, sys.server_principals
sysprocessessys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_exec_connections
sysdatabasessys.databases

常用管理查詢範例

1. 找出最大的 10 張資料表

SELECT TOP 10 
    OBJECT_NAME(i.object_id) AS TableName,
    SUM(a.total_pages) * 8 / 1024.0 AS SizeMB
FROM sys.indexes i
JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.allocation_units a ON p.partition_id = a.container_id
WHERE i.index_id IN (0,1)
GROUP BY i.object_id
ORDER BY SizeMB DESC;

2. 檢視長時間執行的查詢

SELECT 
    r.session_id, r.status, r.command, r.cpu_time, r.total_elapsed_time,
    t.text AS SQLText, DB_NAME(r.database_id) AS DatabaseName
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.total_elapsed_time > 30000; -- > 30 秒

3. 稽核權限異常 (Public 角色擁有過多權限)

SELECT 
    USER_NAME(grantee_principal_id) AS Grantee,
    OBJECT_NAME(major_id) AS ObjectName,
    permission_name, state_desc
FROM sys.database_permissions
WHERE grantee_principal_id = DATABASE_PRINCIPAL_ID('public')
  AND state_desc = 'GRANT';

善用目錄檢視與 DMV,能以標準、高效、版本相容的方式掌握 SQL Server 內部狀態,是 DBA 進階管理的必備技能。

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