SQL Server 中表使用空间查询
一、查询指定表空间使用情况
脚本1
use WideWorldImportersDW
go
sp_spaceused Workload
二、查询库下默认架构所有表空间使用情况
循环对每个表名使用sp_spaceused 即可获取,如脚本2
脚本2
use WideWorldImportersDW
go
--创建临时表,存放表空间使用信息
create table #tableSpace(
name varchar(100)
,rows bigint
,reserved varchar(100)
,data varchar(100)
,index_size varchar(100)
,unused varchar(100)
)
declare @tableName varchar(100)
--查询库中用户表名称,声明游标
declare cur cursor for
select name from sys.tables
where type='U'
open cur
fetch next from cur into @tableName
while @@FETCH_STATUS=0
begin
--循环将每个表使用的空间信息插入临时表
insert into #tableSpace
exec sp_spaceused @tableName
fetch next from cur into @tableName
end
close cur
deallocate cur
select * from #tableSpace
order by cast(left(data,len(data)-2) as bigint) desc
drop table #tableSpace
三、查询库下所有架构所有表空间使用情况
只需要在脚本2的基础上,改动获取表名的查询,将架构和表明结合就好,脚本如下:
脚本3
select s.name +'.'+t.name from sys.tables t
inner join sys.schemas s on s.schema_id=t.schema_id
where type='U'
如果喜欢,可以搜索关注 MSSQLServer 公众号,将有更多精彩内容分享。