SQLServer中系统存储过程sp_spaceused

Posted yclizq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer中系统存储过程sp_spaceused相关的知识,希望对你有一定的参考价值。

SQLServer中系统存储过程sp_spaceused

 

sp_spaceused

执行sp_spaceused存储过程的时候可以不用带参数,直接执行,或者exec sp_spaceused都可以,返回两个结果集:

 

列名数据类型描述
database_name varchar(18) 当前数据库的名称。
database_size varchar(18) 当前数据库的大小。
unallocated space varchar(18) 数据库的未分配空间。

 

 

列名数据类型描述
reserved varchar(18) 保留的空间总量。
Data varchar(18) 数据使用的空间总量。
index_size varchar(18) 索引使用的空间。
Unused varchar(18) 未用的空间量。

 

 有关表的空间信息

下例报告为 aa 表分配(保留)的空间量、数据使用的空间量、索引使用的空间量以及由数据库对象保留的未用空间量。

USE Test3
EXEC sp_spaceused \'aa\'

 

SQL Server查看所有表大小、表行数和占用空间信息

一、查看表名和对应的数据行数

select  a.name as \'表名\',b.rows as \'表数据行数\'
from sysobjects a inner join sysindexes b
on a.id = b.id
where   a.type = \'u\'
and b.indid in (0,1)
--and a.name not like \'t%\'
order by b.rows desc


二、查看表名和表占用空间信息
--判断临时表是否存在,存在则删除重建
if exists(select 1 from tempdb..sysobjects where id=object_id(\'tempdb..#tabName\') and xtype=\'u\')
drop table #tabName
go
create table #tabName(
tabname varchar(100),
rowsNum varchar(100),
reserved varchar(100),
data varchar(100),
index_size varchar(100),
unused_size 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 #tabName
    exec sp_spaceused @name
    --print @name
 
    fetch next from cur into @name
end
close cur
deallocate cur

select tabname as \'表名\',rowsNum as \'表数据行数\',reserved as \'保留大小\',data as \'数据大小\',index_size as \'索引大小\',unused_size as \'未使用大小\'
from #tabName
--where tabName not like \'t%\'
order by cast(rowsNum as int) desc

 


--系统存储过程说明:

--sp_spaceused 该存储过程在系统数据库master下。
exec sp_spaceused \'表名\' --该表占用空间信息
exec sp_spaceused           --当前数据库占用空间信息

以上是关于SQLServer中系统存储过程sp_spaceused的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2000 系统存储过程

sqlserver数据库存储过程

SQLServer中系统存储过程sp_spaceused

SQLServer中系统存储过程sp_spaceused

如何查看sqlserver 表空间是不是满

sqlserver如何自动调用存储过程, 24小时执行一次?