我需要将一个表中的数据(varbinary(max))迁移到另一个表中。但在执行更新操作时,我遇到了以下错误。
通过逐行执行更新,我已经确定了导致错误的行。奇怪的是,这个字段中的数据仅有3950字节,而其他大小不同的行(如2000字节或20MB)却可以正常工作。
然后,我使用不同的名称重新创建了目标表,现在它可以复制varbinary字段!?!
SQL Server版本为2008 R2,最新更新,并且数据库兼容性为100(SQL Server 2008)。我运行了DBCC CHECKDB和DBCC CHECKALLOC,但未发现错误。
有什么线索可以说明问题出在哪里吗?
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,但未发现错误。
有什么线索可以说明问题出在哪里吗?