您的位置:首页 > 数据库

sql server数据库中各数据表信息统计

2018-03-30 15:26 176 查看
----======================================
----Created:2016年10月14日 11:35:54
----Description:数据库中各数据表信息统计
----======================================
ALTER proc dbo.[upt_GetTablesStatInfo]
as
begin
create table #temp_TableInfo
(
name varchar(100)
,row varchar(100)
,reserved varchar(100)
,data varchar(100)
,index_size varchar(100)
,unused varchar(100)
)
 
declare @name varchar(100) 
declare cur cursor  for 
select t.[name] as name from sys.tables as t,sys.schemas as s where t.schema_id = s.schema_id and s.[name] = 'dbo'

open cur 
fetch next from cur into @name 
while @@fetch_status=0 
begin 
set @name =  'dbo.'+@name 

insert into #temp_TableInfo 
exec sp_spaceused   @name 

fetch next from cur into @name 
end 
close cur 
deallocate cur 
 
create table #temp_TableStat
(
name varchar(100),
row int,
reserved decimal(12,3),
data decimal(12,3),
index_size decimal(12,3),
unused decimal(12,3)
,data_perRow decimal(12,3)

 
insert into #temp_TableStat 
select name
,convert(int,row) as row
,convert(int,replace(reserved,'KB',''))/1024.00 as reserved
,convert(int,replace(data,'KB',''))/1024.00 as data
,convert(int,replace(index_size,'KB',''))/1024.00 as index_size
,convert(int,replace(unused,'KB',''))/1024.00 as unused 
,0
from #temp_TableInfo  

update #temp_TableStat set data_perRow = data * 1024 / row where row > 0
update #temp_TableStat set data_perRow = 0 where row <= 0
--select * from #temp_TableInfo order by data desc 
--select * from #temp_TableStat order by data desc    

select ROW_NUMBER() over(order by data desc) as '序号'
,name  as '数据表名'
,row as '数据记录数'
,reserved as '分配空间(MB)'
,data as '占用空间(MB)'
,unused as '未用空间(MB)'
,index_size as '索引使用空间(MB)'
,data_perRow as '单条记录占用空间(KB)'
from #temp_TableStat  order by data desc 

drop table #temp_TableInfo
drop table #temp_TableStat
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql