复制代码,直接可用。
1 create table #tablespaceinfo --创建结果存储表 2 (nameinfo varchar(150) , 3 rowsinfo int , 4 reserved varchar(120) , 5 datainfo varchar(120), 6 index_size varchar(120) , 7 unused varchar(120) ) 8 9 declare @tablename varchar(255) --表名称 10 declare @cmdsql varchar(500) 11 DECLARE Info_cursor CURSOR FOR 12 select o.name 13 from sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1 14 and o.name not like N'#%%' order by o.name 15 OPEN Info_cursor 16 FETCH NEXT FROM Info_cursor 17 INTO @tablename 18 WHILE @@FETCH_STATUS = 0 19 BEGIN 20 21 if exists (select * from sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1) 22 23 exec('insert into #tablespaceinfo exec sp_spaceused '''+@tablename+'''') 24 25 PRINT @tablename 26 FETCH NEXT FROM Info_cursor 27 INTO @tablename 28 END 29 30 CLOSE Info_cursor 31 DEALLOCATE Info_cursor 32 select 33 nameinfo as 表名 ,b.chnname,rowsinfo as 记录数 34 ,reserved as 保留空间,datainfo as 使用空间 35 ,index_size as 索引使用空间,unused as 未用空间 36 ,convert(varchar(20),cast(stuff(rtrim(reserved),len(rtrim(reserved))-2,3,'') as int)/1024.0)+' MB' as 保留空间MB,convert(varchar(20),cast(stuff(rtrim(datainfo),len(rtrim(datainfo))-2,3,'') as int)/1024.0)+' MB' as 使用空间MB 37 , convert(varchar(20),cast(stuff(rtrim(index_size),len(rtrim(index_size))-2,3,'') as int)/1024.0)+' MB' as 索引使用空间MB, convert(varchar(20),cast(stuff(rtrim(unused),len(rtrim(unused))-2,3,'') as int)/1024.0)+' MB' as 未用空间MB 38 from #tablespaceinfo a LEFT JOIN tblist b ON a.nameinfo=b.tbname 39 WHERE rowsinfo>0 40 order by convert(int,isnull(left(reserved,len(rtrim(reserved))-3),'0')) DESC, 41 cast(stuff(rtrim(index_size),len(rtrim(index_size))-2,3,'') as int) desc,cast(stuff(rtrim(datainfo),len(rtrim(datainfo))-2,3,'') as int) desc,cast(stuff(rtrim(unused),len(rtrim(unused))-2,3,'') as int) desc 42 drop table #tablespaceinfo
效果图