统计SQL SERVER数据库内所有表占用空间并排序

Sybase数据库恢复 2010-09-15 08:22:25

以下存储过程能够统计sqlserver数据库内所有用户表所占用的空间,并按照占用空间大小倒序排列。

——————————————————————————————————————————–

CREATE PROCEDURE GetAllTableSizes

AS

DECLARE @TableName VARCHAR(100)

DECLARE tableCursor CURSOR FORWARD_ONLY

FOR

select [name] from dbo.sysobjects

where OBJECTPROPERTY(id, N'IsUserTable') = 1

FOR READ ONLY



CREATE TABLE #TempTable

(

tableName varchar(100),

numberofRows varchar(100),

reservedSize varchar(50),

dataSize varchar(50),

indexSize varchar(50),

unusedSize varchar(50)

)

OPEN tableCursor

WHILE (1=1)

BEGIN

FETCH NEXT FROM tableCursor INTO @TableName

IF(@@FETCH_STATUS<>0) BREAK;

INSERT #TempTable EXEC sp_spaceused @TableName

END

CLOSE tableCursor

DEALLOCATE tableCursor



UPDATE #TempTable

SET reservedSize = REPLACE(reservedSize, ' KB', '')



SELECT tableName 'Table Name',

numberofRows 'Total Rows',

reservedSize 'Reserved KB',

dataSize 'Data Size',

indexSize 'Index Size',

unusedSize 'Unused Size'

FROM #TempTable

ORDER BY CONVERT(bigint,reservedSize) DESC



DROP TABLE #TempTable

go

——————————————————————————————————————————–
本文链接: http://www.dbainfo.net/sql-server-database-all-tables-space-order-desc.htm
版权所有:本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
转载务必注明原始出处:Sybase数据库技术,数据库恢复[http://www.dbainfo.net]
...全文
162 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
那差不多。 只不多我这边用了游标而已。
obuntu 2010-09-15
  • 打赏
  • 举报
回复
也是插入临时表,select的时候再排序呢。
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 obuntu 的回复:]

直接用sp_msforeachtable 就可以了。
[/Quote]

sp_msforeachtable 不能排序啊
obuntu 2010-09-15
  • 打赏
  • 举报
回复
直接用sp_msforeachtable 就可以了。
  • 打赏
  • 举报
回复
这几天sqlserver板块有点冷清。 发个帖子热闹热闹。
youyou2404 2010-09-15
  • 打赏
  • 举报
回复
地下7层 还没人来顶
lds1ove 2010-09-15
  • 打赏
  • 举报
回复
地下二层 爽。

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧