在 SQL Server 2008 中重新计算行大小?

Mar*_*ček 5 sql-server-2008 size

可以在 SQL Server 2008 中重新计算行大小吗?拿这个例子:

declare @counter int
declare @statement nvarchar(max)
set @counter=0
drop table kua2
create table kua2(id int)
while @counter<307
begin
    set @statement = N'alter table kua2 add id'+CAST(@counter as nvarchar(max))+N' nvarchar(max)'
    exec (@statement)
    set @statement = N'alter table kua2 drop column id'+CAST(@counter as nvarchar(max))
    exec (@statement)
    set @counter=@counter+1
end

alter index all on kua2 rebuild

dbcc cleantable (0,'kua2',0)

alter table kua2 add id0 int
alter table kua2 add id1 int
alter table kua2 add id2 int
alter table kua2 add id3 int
Run Code Online (Sandbox Code Playgroud)

当我添加 id3 列时,我收到了关于 8060 字节的警告,但该表只有 5 个 int 列,它仍然计算行大小中删除的 nvarchar(max) 列。

唯一有帮助的是重新创建表。但出于几个原因,我不想这样做。有没有办法告诉 SQL Server 以某种方式重新计算行大小?

Pau*_*ite 4

这是 SQL Server 2012 RC0 中仍然存在的一个错误(尽管是一个相当小的错误)。在connect.microsoft.com上报告

(谢谢丹尼先生)。