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号