|
马上注册,结交更多好友,享用更多功能,轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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
|
|