--返回当前数据库中所有用户表的使用空间列表
--create PROC tablespace_list
--AS
--SET NOCOUNT ON
DECLARE @tblcount INT --表的个数
,@tblname VARCHAR(60) --表名
--用于存放最终结果的表变量
DECLARE @result TABLE (表名 VARCHAR(40),
行数 VARCHAR(11),
预申请空间 VARCHAR(15) NULL,
数据占用空间 VARCHAR(15) NULL,
索引占用空间 VARCHAR(15) NULL,
空闲 VARCHAR(15) NULL
);
--用于存放所有表名的表变量
DECLARE @tbl TABLE (tblname VARCHAR(256),
id INT IDENTITY(1,1) NOT NULL
);
--将当前库中所有的表名存入表变量@tbl
INSERT INTO @tbl
SELECT '['+b.name+'].['+a.name+']' AS tblname
FROM sys.all_objects a join sys.schemas b
ON a.schema_id=b.schema_id
WHERE a.type='U'
--获得当前库中表的个数
SELECT @tblcount=MAX(id) FROM @tbl
WHILE @tblcount>0
BEGIN
SELECT @tblname=tblname FROM @tbl WHERE id=@tblcount
INSERT INTO @result EXEC ('EXEC SP_SPACEUSED ' +'"'+@tblname+'"')
SET @tblcount=@tblcount-1
END
SELECT * FROM @result ORDER BY CONVERT(INT,REPLACE(预申请空间,'kb','')) DESC
--create PROC tablespace_list
--AS
--SET NOCOUNT ON
DECLARE @tblcount INT --表的个数
,@tblname VARCHAR(60) --表名
--用于存放最终结果的表变量
DECLARE @result TABLE (表名 VARCHAR(40),
行数 VARCHAR(11),
预申请空间 VARCHAR(15) NULL,
数据占用空间 VARCHAR(15) NULL,
索引占用空间 VARCHAR(15) NULL,
空闲 VARCHAR(15) NULL
);
--用于存放所有表名的表变量
DECLARE @tbl TABLE (tblname VARCHAR(256),
id INT IDENTITY(1,1) NOT NULL
);
--将当前库中所有的表名存入表变量@tbl
INSERT INTO @tbl
SELECT '['+b.name+'].['+a.name+']' AS tblname
FROM sys.all_objects a join sys.schemas b
ON a.schema_id=b.schema_id
WHERE a.type='U'
--获得当前库中表的个数
SELECT @tblcount=MAX(id) FROM @tbl
WHILE @tblcount>0
BEGIN
SELECT @tblname=tblname FROM @tbl WHERE id=@tblcount
INSERT INTO @result EXEC ('EXEC SP_SPACEUSED ' +'"'+@tblname+'"')
SET @tblcount=@tblcount-1
END
SELECT * FROM @result ORDER BY CONVERT(INT,REPLACE(预申请空间,'kb','')) DESC