最大行大小错误 - 与惰性SELECT INTO一起使用,不与INSERT INTO一起使用

时间:2017-11-01 08:40:19

标签: sql-server sql-server-2014

我应该强调下面是一个懒惰的操作工作的好奇心,所以请不要浪费任何时间在它上面 - 只要你碰巧有一个建议在你头顶。

使用便利部件来创建一个大的平台,以备将来在邮件文件中使用。

我收到了这个错误:

  

无法创建大小为11559的行,该行大于允许的最大行大小8060.

现在我采用了懒惰的方法,并使用SELECT * INTO FROM创建了一个模板表(~500列,所有varchar(max)),没有任何问题。如果我然后截断创建的表并插入其中(从SAME源表强调),我将返回上面的错误。

(为清楚起见,我也“手动”创建了表格(即CREATE TABLE),并在插入时遇到同样的问题)

虽然我熟悉行大小限制(因此使用varchar(max)),但特别奇怪的是在源表上,showcontig在源表上返回MaximumRecordSize是3676,所以我是无法确定问题所在。

任何建议都会感激不尽!

1 个答案:

答案 0 :(得分:0)

SQL Server has the limit of 8K per table row。 您应该检查并调整所有nvarchar(nnn)列的大小和/或将表拆分(并将其标准化,我怀疑)为几个。 另一种解决方法是使用nvarchar(max),但要小心。