加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLSERVER系统视图,系统表,sys.sql_modules视图

发布时间:2022-10-16 22:01:15 所属栏目:MsSql教程 来源:未知
导读: --我们首先创建一张表和一些索引
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

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!