我们正在更改数据库的排序规则。
我们遇到了一个问题,当我尝试更改其中一列(使用数据类型 varchar(max))时,我收到以下错误:
Cannot create a row of size 8083 which is greater than the allowable maximum row size of 8060.
如果我检查最大帖子的大小。
select top 1 LEN(Document) as l1,* from GroupDocument where LEN(document) > 8000 order by LEN(document) desc
我得到的尺寸为 39431,大约 10 页。
我认为这是我无法更改排序规则的问题。我之前在其他专栏中没有遇到过这个问题。任何帮助,将不胜感激。
我想一种解决方案是将表的所有内容复制到另一个表,更改排序规则,然后再次将其移回。但如果可能的话,我宁愿不这样做。
编辑:
尝试了以下方法:
创建表 temptable (id int, document nvarchar(max))
插入到 temptable (id, document) 中选择 GroupDocumentID, Document from GroupDocument
alter table GroupDocument drop column Document alter table temptable alter column document nvarchar(max) ALTER TABLE [GroupDocument] add [Document] ntext COLLATE Finnish_Swedish_CI_AS NULL
update GroupDocument set Document = (select temptable.document from temptable where temptable.id = GroupDocument.GroupDocumentID)
还是同样的问题。
导致问题的行有一个 7996 字节的 varchar,+ 一些整数使它成为我猜的边界情况。