If all the columns are fixed length, you can run this query and look for the type_desc = CLUSTERED or HEAP. It also will give you info about indexesSELECT type_desc, INDEXPROPERTY(OBJECT_ID, NAME, 'minlen') AS min_row_lenFROM sys.indexesWHERE OBJECT_ID = OBJECT_ID('dbo.YourTableName');
If there are variable length columns, you can find the maximum space for in-row using this:SELECT c.name, pc.max_inrow_lengthFROM sys.system_internals_partition_columns pc JOIN sys.partitions p ON p.partition_id = pc.partition_id JOIN sys.columns c ON column_id = partition_column_id AND c.object_id = p.object_idWHERE p.object_id = OBJECT_ID('dbo.YourTableName');
and, of course, add it up to find the total. However, that is the maximum, so if your variable length columns have less than max length it would be less. Also, if there is row overflow data or LOB data, that is not included either.Calculating all of that is way above my intellectual capacity, so I will defer to others.