我需要將數據(varbinary(max))從一個表遷移到另一個表。當執行更新要做到這一點,我得到以下錯誤複製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,但沒有發現錯誤。
任何線索可能是錯誤的地方?
非常感謝您指出了這一點!這讓我非常頭疼。現在我也明白了爲什麼SMSS中的設計師在對錶格進行一些「微小」更改時會生成一個新表格。 – Martin 2012-03-14 12:34:44