2011-03-31 3 views
1

Есть ли запрос, который может помочь определить таблицы, чьи строки потенциально длиннее 8060 байт в MSSQL 2008? Я понимаю, что это максимальный размер строки данных.запрос для определения длинных строк

например.

create table a (
    a varchar(4000), 
    b varchar(4000), 
    c varchar(4000) 
) 

ответ

1

Быстро и грязно.

SELECT OBJECT_NAME(object_id),SUM(max_length) 
FROM sys.columns  
WHERE is_computed=0 and OBJECTPROPERTY(object_id,'IsUserTable')=1 
GROUP BY object_id  
HAVING SUM(max_length) > 8060 or MIN(max_length)=-1 /*MAX datatype*/ 

Выпадающие и измененные столбцы могут по-прежнему потреблять неиспользуемое пространство. Это видно через sys.system_internals_partition_columns

Вы могли бы быть лучше, глядя на sys.dm_db_partition_stats, чтобы определить, какие объекты фактически имеют от страниц строки, выделенные.

Смежные вопросы