代码之家  ›  专栏  ›  技术社区  ›  TheSmurf

SQL Server最大行大小

  •  11
  • TheSmurf  · 技术社区  · 16 年前

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

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

    那是8094字节吗?字符?领域?连接超过某个限制的多个表时出现问题吗?

    6 回复  |  直到 15 年前
        1
  •  10
  •   JeremiahClark    16 年前

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

    [编辑]

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

        2
  •  7
  •   Kibbee    16 年前

    似乎吸引了很多人的问题是,您可以创建一个表,根据定义,它可以容纳超过8K的数据,并且它可以接受它。这个表会很好地工作,直到您真正尝试在表中插入超过8K的数据为止。

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

        3
  •  3
  •   JeremiahClark    16 年前

    这篇文章在试图解释它(在SQL 2005的上下文中)方面做得很好:

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

        4
  •  2
  •   Kevin Albrecht    15 年前

    仅供参考,如果在数据库上运行此SQL命令是由删除可变长度列后需要回收的空间导致的,则可以解决此问题:

    DBCC CLEANTABLE (0,[dbo.TableName])
    

    见: http://msdn.microsoft.com/en-us/library/ms174418.aspx

        5
  •  0
  •   AndyMan    16 年前

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

        6
  •  0
  •   Redbaron    16 年前

    8094字节。

    如果你列出更多关于你正在做什么的信息,它可能会帮助我们找出真正的原因。