CREATEPROC spaceused_simulator @database_namevarchar(128) AS DECLARE@cmdvarchar(1000), @bytesint SET NOCOUNT ON SELECT@bytes=[low]/1024FROM master..spt_values WHEREnumber=1 AND type ='E' CREATETABLE #tmp_spaceused ( id intNULL, tablename varchar(128) NULL, rows intNULL, reserved intNULL, data intNULL, index_size intNULL, unused intNULL) SET@cmd= 'INSERT INTO #tmp_spaceused (id, tablename) SELECT id, name FROM '+@database_name+'..sysobjects WHERE xtype = ''U'' AND name <> ''dtproperties''' EXEC (@cmd) SET@cmd= 'UPDATE #tmp_spaceused SET rows = A.rows FROM '+@database_name+'..sysindexes A WHERE #tmp_spaceused.id = A.id AND A.indid IN (0, 1)' EXEC (@cmd) SET@cmd= 'UPDATE #tmp_spaceused SET reserved = A.SumReserved FROM (SELECT id, SUM(reserved) AS SumReserved FROM '+@database_name+'..sysindexes WHERE indid IN (0, 1, 255) GROUP BY id) AS A JOIN #tmp_spaceused ON A.id = #tmp_spaceused.id' EXEC (@cmd) SET@cmd= 'UPDATE #tmp_spaceused SET data = C.data FROM (SELECT A.id, A.SumDpages + ISNULL(B.SumUsed, 0) AS data FROM (SELECT id, SUM(dpages) AS SumDpages FROM '+@database_name+'..sysindexes WHERE indid IN (0, 1) GROUP BY id) AS A LEFT JOIN (SELECT id, ISNULL(SUM(used), 0) AS SumUsed FROM '+@database_name+'..sysindexes WHERE indid = 255 GROUP BY id) AS B ON A.id = B.id) AS C JOIN #tmp_spaceused ON C.id = #tmp_spaceused.id' EXEC (@cmd) SET@cmd= 'UPDATE #tmp_spaceused SET index_size = A.SumUsed - #tmp_spaceused.data FROM (SELECT id, SUM(used) AS SumUsed FROM '+@database_name+'..sysindexes WHERE indid IN (0, 1, 255) GROUP BY id) AS A JOIN #tmp_spaceused ON A.id = #tmp_spaceused.id' EXEC (@cmd) SET@cmd= 'UPDATE #tmp_spaceused SET unused = #tmp_spaceused.reserved - A.SumUsed FROM (SELECT id, SUM(used) AS SumUsed FROM '+@database_name+'..sysindexes WHERE indid IN (0, 1, 255) GROUP BY id) AS A JOIN #tmp_spaceused ON A.id = #tmp_spaceused.id' EXEC (@cmd) UPDATE #tmp_spaceused SET reserved = reserved *@bytes, data = data *@bytes, index_size = index_size *@bytes, unused = unused *@bytes SELECT*FROM #tmp_spaceused ORDERBY tablename GO