你是要看所有表/索引占用的空间,还是碎片的空间 如果是后者 我就不清楚了
前者 参看:(查询某个数据段上表占用的空间 )
SELECT USER_NAME(O.uid),O.name,I.name,I.indid,
STR(ROUND((RESERVED_PGS(I.id,doampg)+RESERVED_PGS(I.id,ioampg))*(2048/1024576.0),2),9,2), --reserved
STR(ROUND(CONVERT(numeric(20,9),DATA_PGS(I.id,doampg))*(2048/1024576.0),2),9,2), --data
STR(ROUND(CONVERT(numeric(20,9),DATA_PGS(I.id,ioampg))*(2048/1024576.0),2),9,2), --index
STR(ROUND(CONVERT(numeric(20,9),((RESERVED_PGS(I.id,doampg)+RESERVED_PGS(I.id,ioampg))-(DATA_PGS(I.id,doampg)+DATA_PGS(I.id,ioampg))))*(2048/1024576.0),2),9,2), --unused
I.status,
I.status2
FROM syssegments S,sysindexes I,sysobjects O
WHERE S.name='default' --段名
AND I.id!=8
AND I.segment=S.segment
AND I.id=O.id ORDER BY I.indid