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 数据库结构、元数据和性能的全面访问。