用SQL Script 取得Database 中所有Table 的记录数及大小

  主要用于需要知道Databases 中那些表占用太多的空间时,  可建一个SP 然后执此SP即可列出。

 

create procedure  dbo.sp_ListAllTableSize
as

set nocount on

Declare @vSQLStatement varchar(100)
Declare @vTableName varchar(100)
Declare @vTableName1 varchar(100)
Declare @vCount int
Select @vCount=1

If Not Object_ID(N'tempdb.dbo.##tablesize') is Null
 drop table ##TableSize

create table ##TableSize
(
 TableName sysname,
 Total_rows  int,
 reserved_size varchar(100) ,
 data_size varchar(100) ,
 index_size varchar(100) ,
 unused_size varchar(100)
)

Declare @cursorAllTableName cursor

Set @cursorAllTableName = cursor for
 select name from sysobjects where type='U' Order by Name Desc
Open @cursorAllTableName
Fetch next from @cursorAllTableName Into @vTableName
set nocount OFF
While @@Fetch_Status=0
Begin
 Select @vTableName1 = Upper(Ltrim(Rtrim(@vTableName)))
 select @vSQLStatement = ' Insert into ##TableSize exec sp_Spaceused ['+@vTableName1 + '] '
 exec (@vSQLStatement)
 Fetch next from @cursorAllTableName Into @vTableName
 Select @vCount=@vCount+1
End

Close @cursorAllTableName
Deallocate @cursorAllTableName

Set NoCount OFF

select TableName , Total_rows ,
 Reserved = convert(int , replace(Reserved_Size, 'KB' , '' ) ) ,
 Data = convert(int , replace(data_size, 'KB' , '' ) ) ,
 Indexes = convert(int , replace(Index_Size, 'KB' , '' ) ) ,
 Unused = convert(int , replace(Unused_Size, 'KB' , '' ) ) ,
 Unit = 'KB'
 from ##TableSize
 order by Reserved desc


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值