查看sql server每个表占用的空间大小

来源:互联网 发布:网吧计费软件破解 编辑:程序博客网 时间:2024/04/30 17:24
--判断是否存在结果存储表[tablespaceinfo]。如果不存在,则创建if not exists(   select * from dbo.sysobjects   where id = object_id(N'[dbo].[tablespaceinfo]')   and OBJECTPROPERTY(id, N'IsUserTable') = 1)create table tablespaceinfo(   nameinfo varchar(50) ,   rowsinfo int , reserved varchar(20) ,   datainfo varchar(20) ,   index_size varchar(20) ,   unused varchar(20)) delete from tablespaceinfo --清空原有数据表 declare @tablename varchar(255) --表名称 变量declare @cmdsql varchar(500) --执行命令 变量--申明游标 取出库中所有表名 DECLARE Info_cursor CURSOR FOR  select o.name  from dbo.sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1  and o.name not like N'#%%' order by o.name OPEN Info_cursorFETCH NEXT FROM Info_cursorINTO @tablename WHILE @@FETCH_STATUS = 0BEGIN--如果是用户表 if exists  (   select * from dbo.sysobjectswhere id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1) --说明:sp_executesql 执行可以多次重复使用或动态生成的Transact-SQL 语句或批处理 -- sp_spaceused 显示行数、保留的磁盘空间以及当前数据库中的表、索引视图 -- Service Broker 队列所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。 execute sp_executesql N'insert into tablespaceinfo exec sp_spaceused @tbname', N'@tbname varchar(255)', @tbname = @tablename FETCH NEXT FROM Info_cursorINTO @tablenameEND CLOSE Info_cursor  --闭关游标 DEALLOCATE Info_cursor   --释放游标 GO --显示数据库信息sp_spaceused @updateusage = 'TRUE' --显示表信息select * from tablespaceinfoorder by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc
0 0
原创粉丝点击