sqlserver 最重要的幾個系統表
在 SQL Server 中,系統表存儲了數據庫的元數據,提供了關于數據庫結構、對象、權限等信息。以下是一些最重要的系統表,它們用于管理和查詢數據庫的結構和狀態:
1. sys.objects
- 描述:此表包含了數據庫中所有對象的信息,包括表、視圖、存儲過程、函數、索引等。
- 常用字段:
object_id: 對象的唯一標識符。name: 對象的名稱。type: 對象的類型(如U表示用戶表,V表示視圖,P表示存儲過程)。
sql
SELECT * FROM sys.objects WHERE type = 'U'; -- 查找所有用戶表
2. sys.tables
- 描述:此表僅包含數據庫中所有的用戶表信息,過濾掉其他類型的對象。
- 常用字段:
object_id: 表的唯一標識符。name: 表的名稱。schema_id: 表所屬的架構 ID。
sql
SELECT * FROM sys.tables; -- 查找所有用戶表
3. sys.columns
- 描述:此表包含了每個表或視圖的列信息。
- 常用字段:
column_id: 列的唯一標識符。name: 列的名稱。object_id: 列所屬的對象 ID(即表或視圖的 ID)。type: 列的數據類型。
sql
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('YourTableName'); -- 查找特定表的列信息
4. sys.indexes
- 描述:此表包含了數據庫中所有索引的信息,包括表的主鍵、唯一約束等。
- 常用字段:
object_id: 索引所屬對象的 ID(通常是表的 ID)。name: 索引的名稱。type: 索引的類型(如1表示聚集索引,2表示非聚集索引)。
sql
SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID('YourTableName'); -- 查找特定表的索引
5. sys.foreign_keys
- 描述:此表包含了數據庫中所有外鍵約束的信息。
- 常用字段:
object_id: 外鍵約束的對象 ID。name: 外鍵約束的名稱。referenced_object_id: 外鍵約束所引用的主表的對象 ID。
sql
SELECT * FROM sys.foreign_keys; -- 查找所有外鍵約束
6. sys.sysobjects
- 描述:這是一個較為古老的系統表,存儲了所有對象的信息,包括表、視圖、存儲過程等,適用于 SQL Server 早期版本。
- 常用字段:
id: 對象的唯一標識符。name: 對象的名稱。type: 對象的類型。
注:
sys.sysobjects在新版本的 SQL Server 中已被sys.objects取代,不推薦在現代版本中使用。
7. sys.database_principals
- 描述:此表包含了數據庫中的所有主體信息,如用戶、角色和應用程序等。
- 常用字段:
principal_id: 主體的唯一標識符。name: 主體的名稱。type: 主體的類型(如S表示 SQL 用戶,R表示數據庫角色)。
sql
SELECT * FROM sys.database_principals; -- 查找所有數據庫主體
8. sys.dm_exec_sessions
- 描述:此視圖提供了關于當前 SQL Server 會話的信息。它可以用于監控活躍會話。
- 常用字段:
session_id: 會話的唯一標識符。login_name: 登錄的用戶名。status: 會話的狀態(如sleeping,running)。
sql
SELECT * FROM sys.dm_exec_sessions; -- 查看當前會話
9. sys.dm_exec_requests
- 描述:此視圖提供了關于當前執行中的請求的信息,主要用于監控正在執行的查詢。
- 常用字段:
session_id: 與請求關聯的會話 ID。status: 請求的狀態。command: 正在執行的命令(如SELECT,INSERT)。
sql
SELECT * FROM sys.dm_exec_requests; -- 查找正在執行的請求
10. sys.sql_logins
- 描述:此表存儲了 SQL Server 實例中的所有 SQL 登錄信息。
- 常用字段:
name: 登錄的名稱。type: 登錄的類型(如 SQL 登錄或 Windows 登錄)。
sql
SELECT * FROM sys.sql_logins; -- 查找所有 SQL 登錄
總結
sys.objects和sys.tables是查詢數據庫中對象的常用系統表。sys.columns和sys.indexes幫助你查看列和索引信息。sys.foreign_keys和sys.database_principals用于管理外鍵約束和數據庫用戶信息。sys.dm_exec_sessions和sys.dm_exec_requests用于查看當前會話和執行的查詢。
這些系統表提供了對 SQL Server 數據庫結構、元數據和性能的全面訪問。

浙公網安備 33010602011771號