QQ登录

只需一步,快速开始

立即注册 找回密码

流星爱

发表于 2016-3-23 16:30:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x


查看MSSQL每个数据表大小.登陆数据库后运行:
CREATE PROC [dbo].[tablespace_list]
AS
SET NOCOUNT ON

DECLARE @tblcount INT --表的个数
,@tblname VARCHAR(128) --表名
,@schemaname varchar(64)

--用于存放最终结果的表变量
DECLARE @result TABLE (表名 VARCHAR(128),
行数 VARCHAR(11),
预申请空间 VARCHAR(15) NULL,
数据占用空间 VARCHAR(15) NULL,
索引占用空间 VARCHAR(15) NULL,
空闲 VARCHAR(15) NULL
);

DECLARE @resultEx TABLE (
架构名 varchar(64),
表名 VARCHAR(128),
行数 VARCHAR(11),
预申请空间 VARCHAR(15) NULL,
数据占用空间 VARCHAR(15) NULL,
索引占用空间 VARCHAR(15) NULL,
空闲 VARCHAR(15) NULL
);

--用于存放所有表名的表变量
DECLARE @tbl TABLE (tblname VARCHAR(128),
schemaname varchar(64),
id INT IDENTITY(1,1) NOT NULL
);

--将当前库中所有的表名存入表变量@tbl
INSERT INTO @tbl
select a.name,b.name
FROM sys.all_objects a join sys.schemas b
ON a.schema_id=b.schema_id
WHERE a.type in ('U','S');

--获得当前库中表的个数
SELECT @tblcount=MAX(id) FROM @tbl

WHILE @tblcount>0
BEGIN
SELECT @tblname=quotename(schemaname)+'.'+quotename(tblname),@schemaname=schemaname FROM @tbl WHERE id=@tblcount
INSERT INTO @result EXEC ('EXEC SP_SPACEUSED ' +'"'+@tblname+'"')
insert into @resultEx select @schemaname,* from @result
delete from @result

SET @tblcount=@tblcount-1

END


select * from @resultEx ORDER BY CONVERT(bigint,REPLACE(预申请空间,'kb','')) DESC

select 架构名,sum(CONVERT(bigint,REPLACE(预申请空间,'kb','')) ) as '总耗费空间kb'
from @resultEx
group by 架构名
order by '总耗费空间kb' desc

select sum(CONVERT(bigint,REPLACE(预申请空间,'kb','')) ) as '总耗费空间kb' from @resultEx

SET NOCOUNT OFF

GO


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部上一主题下一主题返回列表
  • 站长:47343626
  • 邮箱:lx@lxlove.cn
  • logo
快速回复 返回顶部 返回列表