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.objectssys.tables 是查询数据库中对象的常用系统表。
  • sys.columnssys.indexes 帮助你查看列和索引信息。
  • sys.foreign_keyssys.database_principals 用于管理外键约束和数据库用户信息。
  • sys.dm_exec_sessionssys.dm_exec_requests 用于查看当前会话和执行的查询。

这些系统表提供了对 SQL Server 数据库结构、元数据和性能的全面访问。

posted @ 2025-06-03 21:24  熊大熊二  阅读(159)  评论(0)    收藏  举报