兼容性视图:sys.sys+% 开头,如sys.sysobjects。在2000以前的版本很多是系统表,后面逐渐的变成了兼容性视图,向后兼容
目录视图:sys+% 开头,如sys.objects
1.对象相关的视图: sys.objects(目录视图) 、sys.all_objects、sys.sysobjects(兼容性视图)
存储对象:约束、DML触发器、表、函数、存储过程、默认值等
其中 sys.sysobjects 、sys.objects 存储的数据一致 ,只是列不同 。sys.all_objects 的数据等于 system_objects + sys.objects 的数据 。对于每个用户登陆数据库后 ,只能这些表中查看权限内的对象 。DDL触发器不会记录在以上的系统表中,因为DDL触发器是在架构外,他本身也可以修改架构的。
会单独记录在 sys.triggers 中 。
2.触发器 :sys.triggers 、sys.server_triggers
数据库级的触发器均会记录在 sys.triggers 中,包括DML触发器和DDL触发器
服务器级的触发器会记录在sys.server_triggers 中 ,如删除新建数据库。
3.列:sys.columns(目录视图)、sys.syscolumns(兼容性视图)
存储对象:内部表、系统表、用户表、视图、表值函数 涉及的列,每个列返回一行数据
两张表存储的数据条数一样。
4.约束 :sys.sysconstraints (兼容性视图)
存储对象:主键约束、唯一、外键、Check、默认、列级、表级约束
是下面4张目录视图的总和
sys.check_constraints:check约束
sys.default_constraints :默认约束
sys.key_constraints:主键约束和唯一约束
sys.foreign_key :外键约束对象 。sys.sysforeignkeys 则具体显示出外建约束的具体表和字段信息
5.SQL 定义语句视图:sys.syscomments、SYS.SQL_MODULES 。
存储对象:视图、函数、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程
sys.syscomments 是兼容性视图,一个对象,可对应多条定义记录。定义的语句是Text存储的,所以最多只能存储4000,超过4000就会保存在多条记录。当需要查询对象定义时,需将多条记录返回的Text相加起来。SYS.SQL_MODULES 是目录视图,一个对象,对应一条定义记录。定义的语句是通过Nvarchar(max)存储的。
另外 SYS.SQL_MODULES相关的视图也列举一下。
sys.system_sql_modules 目录视图。同SYS.SQL_MODULES 类似,存储的是系统对象,常与sys.system_objects连用 sys.all_sql_modules 目录视图 ,等于SYS.SQL_MODULES +sys.system_sql_modules sys.server_sql_modules 目录视图,存储的是包含服务器级别的TR对象,常与 sys.server_triggers 联接。
6.索引相关
兼容性视图 目录视图
sys.sysindexes --索引 ---------------------》 sys.indexes
sys.sysindexkeys--索引与列关系 ---------------------》 sys.index_columns
sys.syscolumns --列 --------------------》 sys.columns