запрос для определения длинных строк - PullRequest
1 голос
/ 01 апреля 2011

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

например.

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

1 Ответ

1 голос
/ 01 апреля 2011

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

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, чтобы определить, для каких объектов на самом деле выделены страницы вне строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...