SQL Server最大行大小

11
今天遇到了这个错误。不知道有没有人能告诉我这意味着什么:
  
    

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

  
这里的8094是指字节、字符还是字段?如果连接多个表格导致超过某个限制,那么这是否是一个问题?
5个回答

10
在SQL 2000中,行限制为8K字节,与内存中的页面大小相同。
[编辑]
在2005年,页面大小仍为8K,但数据库在页面上的行上使用指针来指向包含更大字段的其他页面。这使得2005能够克服8K行大小的限制。

7
似乎有很多人遇到的问题是,您可以创建一个定义为容纳超过8K数据的表,并且它会正常接受。这个表将正常工作,直到您尝试向其中插入超过8K的数据时。因此,假设您创建了一个具有整数字段(用于主键)和10个varchar(1000)字段的表。大部分时间,表格都可以正常工作,因为您填满所有10个varchar(1000)字段的次数非常少。但是,如果您尝试在每个字段中放置1000个字符,则会出现本问题中提到的错误。

@Erik Kibbee:是的,我们有几个表格的行太大了。我已经多次提出这个问题(我们的数据库一团糟),但这是一个公司店铺,没有人想听结构性问题。从事情的样子来看,NHibernate实际上已经隐藏了这个问题一段时间了。但今天在Remove调用时一切都爆炸了(所有事情)。 - TheSmurf

2

如果问题是由于删除可变长度列后需要回收空间引起的,运行此 SQL 命令可以修复您的数据库:

EXEC sp_spaceused N'[your_table_name]'
DBCC CLEANTABLE (0,[dbo.TableName])

请查看:http://msdn.microsoft.com/en-us/library/ms174418.aspx

0

这曾经是SQL 2000中的一个问题,但我认为在2005年已经解决了。


0

8094字节。

如果您列出有关您正在进行的操作的更多信息,那么这可能有助于我们找出实际原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接