用于标识长行的查询

时间:2011-03-31 21:45:24

标签: sql-server sql-server-2008

是否有一个查询可以帮助识别MSSQL 2008中行可能长于8060字节的表?我知道这是数据行的最大大小。

例如

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

1 个答案:

答案 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以确定实际哪些对象已分配行页面。