Database Table Size Script for SQLServer

I found these two scripts online, very useful for rows counts and size:
Declare @QueryString NVARCHAR(MAX); Select @QueryString =COALESCE(@QueryString + ' UNION ALL ','') + 'SELECT ' + '''' + QUOTENAME(SCHEMA_NAME(sOBJ.SCHEMA_ID)) + '.' + QUOTENAME(sOBJ.name) + ''''+ ' AS [TABLENAME] , COUNT(*) AS [RowCount] FROM ' + QUOTENAME(SCHEMA_NAME(sOBJ.SCHEMA_ID)) + '.' + QUOTENAME(sOBJ.name) + ' WITH (NOLOCK) ' FROM sys.objects sOBJ WHERE sOBJ.type='U' and sOBJ.is_ms_shipped=0x0 Order by SCHEMA_NAME(sObj.Schema_Id), sOBJ.name ; exec sp_executesql @Querystring CREATE TABLE #RowCountsAndSizes (TableName NVARCHAR(128),rows CHAR(11), reserved VARCHAR(18),data VARCHAR(18),index_size VARCHAR(18), unused VARCHAR(18)) EXEC sp_MSForEachTable 'INSERT INTO #RowCountsAndSizes EXEC sp_spaceused ''?'' ' SELECT TableName,CONVERT(bigint,rows) AS NumberOfRows, CONVERT(bigint,left(reserved,len(reserved)-3)) AS SizeinKB FROM #RowCountsAndSizes ORDER BY SizeinKB DESC,NumberOfRows DESC,TableName DROP TABLE #RowCountsAndSizes