常用
--查询数据库中所有表的记录数,所占空间,索引使用空间 exec sp_MSForEachTable @precommand=N'create table ##(表名 sysname,记录数 int,保留空间 Nvarchar(20),使用空间 varchar(20),索引使用空间 varchar(20),未用空间 varchar(20))', @command1=N'insert ## exec sp_spaceused ''?''', @postcommand=N'select * from ## order by 记录数 desc' DROP TABLE ##
另一种
create table #tb(表名 sysname,记录数 int,保留空间 varchar(100),使用空间 varchar(100),索引使用空间 varchar(100),未用空间 varchar(100)) insert into #tb exec sp_MSForEachTable 'EXEC sp_spaceused ''?''' select * from #tb go SELECT 表名, 记录数, cast(ltrim(rtrim(replace(保留空间,'KB',''))) as int)/1024 保留空间MB, cast(ltrim(rtrim(replace(使用空间,'KB',''))) as int)/1024 使用空间MB, cast(ltrim(rtrim(replace(使用空间,'KB',''))) as int)/1024/1024.00 使用空间GB, cast(ltrim(rtrim(replace(索引使用空间,'KB',''))) as int)/1024 索引使用空间MB, cast(ltrim(rtrim(replace(未用空间,'KB',''))) as int)/1024 未用空间MB FROM #tb WHERE cast(ltrim(rtrim(replace(使用空间,'KB',''))) as int)/1024 > 0 --order by 记录数 desc ORDER BY 使用空间MB DESC DROP TABLE #tb