SQL Server最大行大小

时间:2008-08-19 19:32:39

标签: sql-server

今天遇到了这个错误。想知道是否有人可以告诉我这意味着什么:

  
    

无法对大小为9522的行进行排序,大于允许的最大值8094。

  

这是8094字节吗?人物?场?加入多个超出某些限制的表是一个问题吗?

6 个答案:

答案 0 :(得分:10)

在SQL 2000中,行限制为8K字节,与内存中的页面大小相同。

[编辑]

在2005年,页面大小相同(8K),但数据库使用页面中行的指针指向包含更大字段的其他页面。这允许2005年克服8K行大小限制。

答案 1 :(得分:7)

似乎抓住很多人的问题是,您可以创建一个表,根据定义,它可以容纳超过8K的数据,并且它会接受它。并且该表将正常工作,直到您实际尝试将超过8K的数据插入表中。

因此,假设您创建一个包含主键的整数字段和10个varchar(1000)字段的表。该表在大多数情况下都能正常工作,因为填充所有10个varchar(1000)字段的次数非常少。 Howerver,即使你试图在你的每个字段中放置1000个字符,它也会给你这个问题中提到的错误。

答案 2 :(得分:3)

这篇文章在尝试解释它(在SQL 2005的上下文中)做得很公平:

http://www.consortioservices.com/Blog/2008/02/28/MaximumRowSizeInSQLServer2005ToTheLimit.aspx

答案 3 :(得分:2)

仅供参考,在数据库上运行此SQL命令可以解决问题,如果它是由丢弃可变长度列后需要回收的空间引起的:

DBCC CLEANTABLE (0,[dbo.TableName])

请参阅:http://msdn.microsoft.com/en-us/library/ms174418.aspx

答案 4 :(得分:0)

那曾经是SQL 2000中的一个问题,但我认为这是在2005年修复的。

答案 5 :(得分:0)

8094字节。

如果列出一些有关您正在做的事情的更多信息,可能有助于我们找出实际原因。