sqlserver查看表空占用空间的情况

转自 http://blog.csdn.net/xianshengsun/article/details/7657551

方法一:

select object_name(id) tablename,
8*reserved/1024 reservedMB,
rtrim(8*dpages/1024)+'Mb' used,
8*(reserved-dpages)/1024 unused,
8*dpages/1024-rows/1024*minlen/1024 free,
rows,
* 
from sysindexes
where indid=1
order by reserved desc

 

 

方法二:

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_cursor

FETCH NEXT FROM Info_cursor INTO @tablename
WHILE @@FETCH_STATUS = 0

BEGIN

if exists (select * from dbo.sysobjects where id =       object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)

 execute sp_executesql
 N'insert into tablespaceinfo exec sp_spaceused @tbname',
 N'@tbname varchar(255)',
 @tbname = @tablename

FETCH NEXT FROM Info_cursor
INTO @tablename

END
CLOSE Info_cursor
DEALLOCATE Info_cursor
GO

 

 


显示数据库信息

sp_spaceused @updateusage = 'TRUE'

下面的SQL是这个例子的重点

insert into tablespaceinfo exec sp_spaceused @tbname

 

posted @ 2014-04-09 21:48  princessd8251  阅读(195)  评论(0)    收藏  举报