• If anyone is interested the SQL2000 equivalent is

    USE Master
    GO
    CREATE PROC dbo.sp_DBA_spaceused_AllTables2
    @updateusage varchar(5)='false'
    AS
    SET NOCOUNT ON
    
    IF @updateusage IS NOT NULL
    BEGIN
    -- Allow for case sensitivity
    SET @updateusage=LOWER(@updateusage)
    IF @updateusage NOT IN ('true','false')
    BEGIN
    RAISERROR(15143,-1,-1,@updateusage)
    RETURN(1)
    END
    END
    
    -- Retrieve the current page size for the OS
    DECLARE @KB DEC(15)
    SELECT @KB = low/1024.0
    FROM master.dbo.spt_values
    WHERE number=1
    AND type='E'
    
    SELECT
    MAX(DB_NAME()) AS DatabaseName ,
    MAX(GETDATE()) AS DateSampled ,
    U.Name+'.'+O.Name AS TableName ,
    MAX(CASE WHEN I.Indid<2 THEN I.rows ELSE 0 END) AS rows,
    SUM(CASE WHEN I.Indid IN(0,1,255) THEN I.reserved ELSE 0 END) * @KB AS reserved ,
    SUM(CASE WHEN I.indid<2 THEN I.dpages ELSE 0 END
    + CASE WHEN I.indid=255 THEN used ELSE 0 END) * @KB AS data ,
    SUM(CASE WHEN I.indid<2 THEN used-dpages ELSE 0 END) * @KB AS index_size ,
    SUM(CASE WHEN I.indid IN(0,1,255) THEN I.reserved - I.used ELSE 0 END) *@KB AS Unused
    
    FROMdbo.sysobjects AS O
    INNER JOIN dbo.sysindexes AS I ON O.id = I.id
    INNER JOIN dbo.sysusers AS U ON O.uid = U.uid
    GROUP BY U.Name+'.'+O.Name 
    GO