是否有一个查询可以帮助识别MSSQL 2008中行可能长于8060字节的表?我知道这是数据行的最大大小。
例如
create table a (
a varchar(4000),
b varchar(4000),
c varchar(4000)
)
答案 0 :(得分: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
以确定实际哪些对象已分配行页面。