以下的文章主要描述的是SQL Server获取表的占用容量大小的实际操作步骤,其实在实际操作中只要使用系统内置的存储过程sp_spaceused 就能轻松得到到表的相关信息如:sp_spaceused 'tablename'。
其实只要使用系统内置的存储过程sp_spaceused就可以得到表的相关信息
如:sp_spaceused 'tablename'
以下是为了方便写的一个存储过程,目的是把当前的所有表的相关信息全部都保存在一个指定的表里面
CREATEPROCEDUREget_tableinfoAS
ifnotexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[tablespaceinfo]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
createtabletablespaceinfo--创建结果存储表
(nameinfovarchar(50),
rowsinfoint,reservedvarchar(20),
datainfovarchar(20),
index_sizevarchar(20),
unusedvarchar(20))
deletefromtablespaceinfo--清空数据表
declare@tablenamevarchar(255)--表名称
declare@cmdsqlvarchar(500)
DECLAREInfo_cursorCURSORFOR
selecto.name
fromdbo.sysobjectsowhereOBJECTPROPERTY(o.id,N'IsTable')=1
ando.namenotlikeN'#%%'orderbyo.name
OPENInfo_cursor
FETCHNEXTFROMInfo_cursor
INTO@tablename
WHILE@@FETCH_STATUS=0
BEGIN
ifexists(select*fromdbo.sysobjectswhereid=object_id(@tablename)andOBJECTPROPERTY(id,N'IsUserTable')=1)
executesp_executesql
N'insertintotablespaceinfoexecsp_spaceused@tbname',
N'@tbnamevarchar(255)',
@tbname=@tablename
FETCHNEXTFROMInfo_cursor
INTO@tablename
END
CLOSEInfo_cursor
DEALLOCATEInfo_cursor
GO
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
执行存储过程
exec get_tableinfo
查询运行该存储过程后得到的结果
select *
from tablespaceinfo
order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc
- 1.
- 2.
- 3.
- 4.
以上的相关内容就是对SQL Server获取表的占用容量大小的介绍,望你能有所收获。
【编辑推荐】