Я не могу придумать, простой способ сделать это на макушке головы.
Один из способов - это динамически генерировать TSQL для отображения общего размера каждого из них.столбец в каждой таблице, который можно сделать, используя что-то вроде этого:
DECLARE @SQL VARCHAR(MAX)
SELECT @SQL = COALESCE(@SQL + CHAR(10) + 'UNION ALL' + CHAR(10), '') +
'SELECT ''' + QUOTENAME(t.name) + ''' AS TableName, ''' + QUOTENAME(c.name) + ''' AS ColumnName, SUM(DATALENGTH(' + QUOTENAME(c.name) + ')) AS TotalSizeBytes
FROM ' + QUOTENAME(t.name)
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE t.name = 'VoterAccount'
SET @SQL = 'SELECT TableName, ColumnName, TotalSizeBytes FROM (' + @SQL + ') x ORDER BY TotalSizeBytes DESC'
PRINT @SQL -- Just PRINT the SQL out. You can then copy it, and execute manually
Что бы вернуть, например
TableName ColumnName TotalSizeBytes
Table1 Column1 123456789
Table1 Column3 34356464
Table2 ColumnA 33987987
Тем не менее, меня беспокоит то, что это, вероятно, довольно трудоемкий запрос, поэтому я сначала тщательно об этом подумал.Если нет лучших предложений и вы попробуете это, возможно, стоит ограничить его только просмотром подмножества столбцов - т.е. игнорируйте любые столбцы, которые, как вы знаете, с самого начала имеют малый размер, сосредоточьтесь на столбцах, которые, как вы знаете, могутбыть большими.
Идеальным решением было бы, если бы эта информация уже была как-то сохранена в системных таблицах / доступна через DMV - к сожалению, я не знаю, так ли это, я никогда не сталкивался с ней, если онаесть в наличии.