查看 SqlServer 中查看数据库表大小

--查看 SqlServer 中查看数据库表大小 
create table #tb(表名 sysname,记录数 int ,保留空间 varchar(10),使用空间 varchar(10),索引使用空间 varchar(10),未用空间 varchar(10))
go
  insert into #tb exec sp_MSForEachTable 'EXEC sp_spaceused ''?'''
  go
  
  select * from #tb
  go 
  
  drop table #tb
  go

--主要原理: 
 exec sp_spaceused '表名' --取得表占用空間 
 exec sp_spaceused ''--數據庫所有空間 
  
  
 create table #Data(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 name from sysobjects where xtype='u' order by name 
 open cur 
 fetch next from cur into @name 
 while @@fetch_status=0 
 begin 
     insert into #data 
     exec sp_spaceused   @name 
     print @name 
  
     fetch next from cur into @name 
 end 
 close cur 
 deallocate cur 
  
 create table #DataNew(name varchar(100),row int,reserved int,data int,index_size int,unused int) 
  
 insert into #dataNew 
 select name,convert(int,row) as row,convert(int,replace(reserved,'KB','')) as reserved,convert(int,replace(data,'KB','')) as data, 
 convert(int,replace(index_size,'KB','')) as index_size,convert(int,replace(unused,'KB','')) as unused from #data  
  
 select * from #dataNew order by data desc   
exec sp_MSForEachTable 
@precommand=N'
create table ##(
id int identity,
表名 sysname,
字段数 int,
记录数 int,
保留空间 Nvarchar(10),
使用空间 varchar(10),
索引使用空间 varchar(10),
未用空间 varchar(10))',
@command1=N'insert ##(表名,记录数,保留空间,使用空间,索引使用空间,未用空间) exec sp_spaceused ''?''

update ## set 字段数=(select count(*) from syscolumns where id=object_id(''?'')) 
where id=scope_identity()', @postcommand=N'select * from ## order by id drop table ##'



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
查看SQL Server数据库各个大小,可以使用以下方法。 方法一:使用系统存储过程 1. 打开SQL Server Management Studio (SSMS),连接到目标数据库。 2. 在询窗口运行以下命令: ``` EXEC sp_MSforeachtable 'EXEC sp_spaceused ''?''' ``` 该命令会运行系统存储过程`sp_spaceused`,并对每个执行该存储过程。执行完毕后,会显示每个大小信息,包括名、行数、已分配空间、未使用空间等。 方法二:使用动态管理视图 1. 打开SQL Server Management Studio (SSMS),连接到目标数据库。 2. 在询窗口运行以下命令: ``` SELECT t.NAME AS TableName, s.Name AS SchemaName, p.rows AS RowCounts, SUM(a.total_pages) * 8 AS TotalSpaceKB, SUM(a.used_pages) * 8 AS UsedSpaceKB, (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB FROM sys.tables t INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.NAME NOT LIKE 'dt%' AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 255 GROUP BY t.Name, s.Name, p.Rows ORDER BY TotalSpaceKB DESC ``` 该命令会询系统的动态管理视图以获取每个大小信息。执行完毕后,会按照的总空间大小进行排序,并显示名、架构名、行数、总空间、已使用空间和未使用空间等信息。 无论是使用系统存储过程还是动态管理视图,都可以方便地查看SQL Server数据库各个的占用大小信息,以便进行存储空间管理和性能优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值