• A further possibility could be hidden within the indexes. Do indexes have much fragmentation or are they reorganized regularly? Fragmented indexes can have a lot of impact on the their size .I have seen tables without doing maintenance for some weeks, after rebuilding they needed about 50 GB (!) less storage.

    Another step could be to analyze index usage. If indexes are not used they should be dropped as they need storage space too. (Please don't start dropping indexes now, analyzing is a little bit of work 😀 )

    Another possibility is thinking of the storage type. If your storage is for hig availability it might be expensive. Is there data that can be moved to an archive? Could the archive be placed on an less expensive storage as the archive might be "less secure"?

    Also check the size of the database log files and analyze if the size is really needed. Check if you can reduce log growing using a more frequently log backup.

    Check the size of the database files too. A database file might have lots of storage reserved but only less of it actually used (maybe the file growed for example due to index rebuild operations). Try to shrink the file to an appropriate size.