我需要将数据 (varbinary(max)) 从一个表迁移到另一个表。当执行更新来执行此操作时,我收到以下错误
Msg 511, Level 16, State 1, Line 18
Cannot create a row of size 8078 which is greater than the allowable
maximum row size of 8060.
这是我用来从表 DocumentPublication 复制到 DocumentVersion 的更新
UPDATE docver SET RecapRTF = CAST(RTFPublication as VARBINARY(MAX)) FROM
DocumentVersion docver INNER JOIN DocumentPublication docpub
ON docpub.IdDocumentVersion = DOCVER.id
或不带演员表
UPDATE docver SET RecapRTF = RTFPublication FROM
DocumentVersion docver INNER JOIN DocumentPublication docpub
ON docpub.IdDocumentVersion = DOCVER.id
通过逐行执行更新,我隔离了出现错误的行。奇怪的是,该字段中的数据只有 3950 字节,而其他行更少或更多(例如 2000 字节或 20MB)工作正常。
然后我用不同的名称重新创建了目标表,现在它可以复制 varbinary 字段!?!?
SQL Server 版本是 2008 R2,具有最新更新,数据库兼容性为 100 (sql server 2008)。我已经运行了 DBCC CHECKDB 和 DBCC CHECKALLOC 并且没有发现错误。
有什么线索可以说明这里可能出了什么问题吗?
Your docver
表可能有一个删除或更改的列仍在消耗空间。
See 为什么要在删除或添加列后重建表? http://www.simple-talk.com/community/blogs/andras/archive/2009/02/19/72068.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)