【问题标题】:I am getting this error: Cannot create a row of size 8785 which is greater than the allowable maximum of 8060我收到此错误:无法创建大小为 8785 的行,该行大于允许的最大值 8060
【发布时间】:2018-04-21 05:22:43
【问题描述】:

在大多数情况下,这是由于某些特定记录的总体行大小可能引发此类错误。但我的情况不同。我在一台服务器上运行报告,它工作正常。但同样的报告和同样的数据库抛出行大小错误:Cannot create a row of size 8785 which is greater than the allowed maximum of 8060. 关于如何解决此问题的任何建议?

【问题讨论】:

  • 您需要向我们展示表定义以及是否为数据库启用快照隔离等其他设置...
  • 整个 SSRS 报告在测试服务器上运行良好,但问题出在生产服务器上。奇怪的是,两种环境中的表/视图定义是相同的。在数据库级别没有区别。我已经交叉检查了这一点大约 15 次。只是想知道是否有任何其他因素可能导致该错误。
  • 所以您在运行报告时收到此错误?报告有什么作用?它是否调用创建#temp 表的存储过程?您能否提供更多详细信息,以便我们知道您在说什么?
  • 报表后面的查询只是一个select语句,7-8个表之间的连接很少。根本不涉及临时表或存储过程。它在一个测试环境中工作,但在产品中抛出上述错误。
  • 没有意义。 SELECT 查询不会创建行,所以...

标签: sql-server


【解决方案1】:

来自http://blogs.msdn.com/b/msdnts/archive/2006/12/01/row-size-limitation-in-sql-2000-and-2005.aspx

在创建表时,可能会遇到以下情况 信息:'表已创建但其最大行 size(11038) 超过了每行的最大字节数 (8060)。插入 或 UPDATE 此表中的行将失败,如果结果行长度 超过 8060 字节。

第二次报告中的某些内容达到了这个最大值;可能是您尚未发现的边缘情况,其中数据存在差异。

我建议您查看分配给数据库字段的分配 - 例如,是否可以将 varchar(8000) 实际切换为 varchar(max) - 或查看跨多个表重组数据。

【讨论】:

    【解决方案2】:

    我在使用刚刚执行了选择语句的查询时遇到了同样的错误。我将我正在使用的大量视图转换为 CTE,但仍然出现错误。然后我从 CTE 中删除了未使用的列,错误就消失了。不太确定发生了什么,因为我认为优化的查询应该忽略未使用的选择列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多