在 SQL Server 中,系统表是存储在系统数据库(通常是 master
数据库)中的表,它们包含了关于数据库实例和系统信息的数据。查询系统表可以帮助你了解数据库的状态、配置和运行时信息。
以下是一些常用的系统表及其用途:
-
master.sys.tables
- 存储所有数据库中表的元数据。
- 查询示例:
SELECT * FROM master.sys.tables;
-
master.sys.columns
- 存储表中列的元数据。
- 查询示例:
SELECT * FROM master.sys.columns WHERE TABLE_NAME = 'YourTableName';
-
master.sys.indexes
- 存储表中索引的元数据。
- 查询示例:
SELECT * FROM master.sys.indexes WHERE TABLE_NAME = 'YourTableName';
-
master.sys.key_constraints
- 存储表上的主键、唯一约束和外键约束。
- 查询示例:
SELECT * FROM master.sys.key_constraints WHERE TABLE_NAME = 'YourTableName';
-
master.sys.foreign_keys
- 存储表上的外键约束。
- 查询示例:
SELECT * FROM master.sys.foreign_keys WHERE TABLE_NAME = 'YourTableName';
-
master.sys.indexes
- 存储表中索引的详细信息。
- 查询示例:
SELECT * FROM master.sys.indexes WHERE TABLE_NAME = 'YourTableName';
-
master.sys.partitions
- 存储表的分区信息。
- 查询示例:
SELECT * FROM master.sys.partitions WHERE TABLE_NAME = 'YourTableName';
-
master.sys.objects
- 存储数据库对象的元数据,包括表、视图等。
- 查询示例:
SELECT * FROM master.sys.objects WHERE TYPE = 'U' AND NAME = 'YourTableName';
-
master.sys.sql_modules
- 存储存储过程和函数的定义。
- 查询示例:
SELECT * FROM master.sys.sql_modules WHERE OBJECT_ID = OBJECT_ID('YourProcedureName');
-
master.sys.dm_exec_requests
- 存储当前执行的查询请求的信息。
- 查询示例:
SELECT * FROM master.sys.dm_exec_requests;
请注意,查询系统表通常需要具有相应的权限。如果你没有足够的权限,可能会遇到访问被拒绝的错误。此外,某些系统表可能在特定的数据库实例中存在,而不是在所有实例中都存在。