Abfrage zum Identifizieren langer Zeilen

Gibt es eine Abfrage, die helfen kann, Tabellen zu identifizieren, deren Zeilen potenziell länger als 8060 Bytes in MSSQL 2008 sind? Ich verstehe, dass dies die maximale Größe einer datazeile ist.

z.B.

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

Eine schnelle und schmutzige.

 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*/ 

Gedroppte und veränderte Säulen können immer noch verschwendeten Raum verbrauchen. Dies ist durch sys.system_internals_partition_columns sichtbar

Sie können es besser sein, bei sys.dm_db_partition_stats zu sehen, welche objecte tatsächlich aus den sys.dm_db_partition_stats zugewiesen sind.