php读取sqlserver视图,SQLSERVER系统视图

--我们首先创建一张表和一些索引

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_idANDa.object_id=c.object_idANDa.column_id=c.column_idANDb.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

--外键,数据来源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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值