It is pretty useful to check space usage of your tables. SQL server gives a nice system stored procedure called sp_spaceused that returns what you want. You can run the following script on your database and export the results to excel.
You can come up with nice graphs showing why your data base is big and what partitioning strategy to choose. For example I ran this query for a project with a 10GB database. I could not understand why only a few million small records occupy 10GB. The result was expectable. There was an exception log table which occupied half of the space and dropping that table saved so much time for everybody.
DECLARE @spu TABLE(NAME VARCHAR(max), [ROWS] BIGINT, reserved VARCHAR(50), DATA VARCHAR(50), index_size VARCHAR(50), unused VARCHAR(50) ) DECLARE @TName VARCHAR(80) DECLARE C CURSOR FAST_FORWARD READ_ONLY FOR SELECT o.name FROM sys.objects AS o WHERE o.schema_id = SCHEMA_ID('dbo') AND o.type = 'U' OPEN C FETCH NEXT FROM C INTO @Tname WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO @spu EXEC sys.sp_spaceused @objname = @TName -- nvarchar(776) FETCH NEXT FROM C INTO @Tname END CLOSE C DEALLOCATE C SELECT * FROM @spu ORDER BY DATA DESC