SQLSERVER系统视图,系统表,sys.sql_modules视图
CREATE TABLE dbo.test
(
idintIDENTITY(1,1)NOTNULL,
name char(100)NULL,
CONSTRAINT PK_test PRIMARY KEY CLUSTERED (idASC)
)
CREATE NONCLUSTERED IN
--我们首先创建一张表和一些索引 CREATE TABLE dbo.test ( idintIDENTITY(1,1)NOTNULL, name char(100)NULL, CONSTRAINT PK_test PRIMARY KEY CLUSTERED (idASC) ) CREATE NONCLUSTERED INDEX IX_testONdbo.test(name) --表和对象详细信息,根据表名称查询出object_id为 --事实上几乎所有的用户对象都出自于SYS.OBJECTS表 SELECT*FROM SYS.OBJECTS WHERE type_desc='USER_TABLE' AND NAME='TEST' --兼容性视图SYSOBJECTS --如果要查询与该表相关的其他所有对象,则可以执行以下语句 SELECT*FROM SYS.OBJECTS WHERE type_desc='USER_TABLE' AND NAME='TEST' OR parent_object_id in (SELECTobject_id FROM SYS.OBJECTS WHERE type_desc='USER_TABLE' AND NAME='TEST') --表字段详细信息,可以查询出相关column_id SELECT*FROM SYS.COLUMNS WHERE OBJECT_ID=5575058 --兼容性视图SYSCOLUMNS --表索引详细情况,可以清楚的看到存在两个索引 SELECT*FROM SYS.INDEXES WHERE OBJECT_ID=5575058 --兼容性视图SYSINDEXES --表分区情况,数据库中所有表和索引的每个分区在表中各对应一行 --此处可以看到该表有两个分区,聚集索引即表本身,还有一个是name的非聚集索引 --partition_id 即分区的ID --hobt_id包含此分区的行的数据堆或B树的ID SELECT*FROM SYS.PARTITIONS WHERE OBJECT_ID=5575058 --分配单元情况,数据库中的每个分配单元都在表中占一行 --该表只有和SYS.PARTITIONS配合使用才有意义 SELECT*FROM SYS.ALLOCATION_UNITS --SYS.ALLOCATION_UNITS和SYS.PARTITIONS一起使用能够反映出某个对象的页面分配和使用情况 SELECT*FROM SYS.ALLOCATION_UNITS U,SYS.PARTITIONS P WHERE U.TYPE IN (1,3)ANDU.CONTAINER_ID=P.HOBT_IDANDP.OBJECT_ID=5575058 UNION ALL SELECT*FROM SYS.ALLOCATION_UNITS U,SYS.PARTITIONS P WHERE U.TYPE=2ANDU.CONTAINER_ID=P.PARTITION_IDANDP.OBJECT_ID=5575058 --返回每个分区的页和行计数信息 SELECT*FROM SYS.DM_DB_PARTITION_STATS WHERE OBJECT_ID=5575058 --返回索引的详细字段情况 SELECT*FROM SYS.INDEX_COLUMNS WHERE OBJECT_ID=5575058 --兼容性视图SYSINDEXKEYS --以下为根据某个索引名称获取其相关字段的语句 DECLARE @index_field_names VARCHAR(500) SET@index_field_names=''; SELECT@index_field_names=@index_field_names+c.name+',' FROM SYS.INDEX_COLUMNS a,SYS.INDEXES b,SYS.COLUMNS c WHERE a.object_id=b.object_idANDa.index_id=b.index_id ANDa.object_id=c.object_idANDa.column_id=c.column_id ANDb.name='IX_test2' ORDER BY a.index_column_id SET@index_field_names=LEFT(@index_field_names,LEN(@index_field_names)-1) PRINT @index_field_names --CHECK约束,数据来源sys.objects.type='C' SELECT*FROM SYS.CHECK_CONSTRAINTS WHERE OBJECT_ID=? --兼容性视图SYSCONSTRAINTS --数据来源sys.objects.type=D SELECT*FROM SYS.DEFAULT_CONSTRAINTS WHERE OBJECT_ID=? --兼容性视图SYSCONSTRAINTS --主键或唯一约束,数据来源sys.objects.type PK 和UQ SELECT*FROM SYS.KEY_CONSTRAINTS WHERE OBJECT_ID=? --兼容性视图SYSCONSTRAINTS --外键Mssq视图,数据来源sys.object.type=F SELECT*FROM SYS.FOREIGN_KEYS WHERE OBJECT_ID=? --兼容性视图SYSREFERENCES --触发器 SELECT*FROM SYS.TRIGGERS WHERE OBJECT_ID=? --注释 SELECT*FROM SYS.SQL_MODULES --兼容性视图SYSCOMMENTS --数据库用户表 SELECT*FROM SYS.DATABASE_PRINCIPALS --兼容性视图SYSUSERS --数据库数据类型表 SELECT*FROM SYS.TYPES --兼容性视图SYSTYPES (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |