记录生活和工作的点滴

在MS SQL Server数据库批量查看表的大小的三种方法

1.查看单表大小:

sp_spaceused '表 '
如果不写表名,就是看整个库的!

2.察看数据库所有表的大小:
 
方法一:内置存储过程法:

EXEC sp_MSforeachtable @command1="print '?'",@command2="sp_spaceused '?'"

方法二:Transact-SQL语句:

--Transact-SQL语句——列表输出
SET NOCOUNT ON
DECLARE @db VARCHAR(20)
--获取当前数据库
SET  @db=db_name()
DBCC  UPDATEUSAGE(@db) WITH NO_INFOMSGS
GO
 
CREATE TABLE #tblSpace
(
数据表名称   varchar(250)   null,
记录笔数   int   null,
保留空间   varchar(15)   null,
数据使用空间   varchar(15)   null,
索引使用空间   varchar(15)   null,
未使用空间   varchar(15)   null
)
DECLARE @tblname varchar(250)
DECLARE curTbls CURSOR FOR
SELECT TABLE_NAME FROM Information_Schema.TABLES
--BASE TABLE很重要
WHERE TABLE_TYPE= 'BASE TABLE '
 
OPEN CurTbls
FETCH NEXT FROM curTbls INTO @tblName
 
WHILE @@FETCH_STATUS=0
BEGIN
INSERT #tblSpace EXEC sp_spaceused @tblName
FETCH NEXT FROM curTbls INTO @tblName
END
CLOSE CurTbls
DEALLOCATE curTbls
 
SELECT * FROM #tblSpace ORDER BY 记录笔数 DESC
 
DROP TABLE #tblSpace

方法三(与方法二类似,但运行效率更高)

 

EXEC sp_MSforeachtable @command1="print '?'",@command2="sp_spaceused '?'"
 
 
create table tmp (name varchar(50),rows int,reserved varchar(50),
 
data varchar(50),index_size varchar(50),unused varchar(50))
 
insert into tmp (name,rows,reserved,
 
data,index_size,unused) exec sp_msforeachTable @Command1="sp_spaceused '?'"--sp_spaceused 't_vehicle'
 
select *,left(data,len(data)-3)  from tmp order by left(data,len(data)-3)/1 desc

 

引用通告 | 小知识RSS 标签:
1/1, 0«1»

发布评论

您的昵称 邮箱地址 个人主页
Processed in 0.1473 second(s), 9 queries