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

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

发布时间:2022-10-06 15:45:44 所属栏目:MsSql教程 来源:
导读:  --我们首先创建一张表和一些索引

  CREATE TABLE dbo.test

  (

  idintIDENTITY(1,1)NOTNULL,

  name char(100)NULL,

  CONSTRAINT PK_test PRIMARY KEY CLUSTERED (idASC)

 
  --我们首先创建一张表和一些索引
 
  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
 

(编辑:海洋资讯信息网_我爱站长网)

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