无法创建具有大小稀疏数据的行

时间:2015-06-05 13:43:35

标签: sql-server sparse-columns

我有一个表有一个pk列(bigint),一个非稀疏bigint,30 k稀疏列(20 k位,5 k int,5 k nvarchar(255))和一个列集。

当我尝试使用'。'更新nvarchar列时在此列包含当前为null的行中,我得到:

“无法创建具有大小为8028的稀疏数据的行,该行大于允许的最大稀疏数据大小8023。”

当我总结此行的非空列中的数据时,我得到了

a)<< 8023字节,每位使用0.125,每个int 4个,每个nvarchar 2个数据长度(..)。

我得到了

b)>> 8023每个位使用5个,每个int使用8个,每个nvarchar使用4 + datalength(..)。

因此b)中每列的字节数不能是sql server用来计算最大值8023的字节数。

所以我现在很困惑,为什么sql server说行已满。

这是sql server 2012中的(已知)错误吗?

谢谢

现在我试过了:

create table sparsetable (
 id bigint identity primary key
 , dummy1 nchar(4000) sparse
 , dummy2 nchar(4000) sparse
 , dummy3 nchar(4000) sparse
 , b1 bit sparse
 , b2 bit sparse
 , b3 bit sparse
 , b4 bit sparse
 , b5 bit sparse

 , i1 int sparse
 , i2 int sparse
 , i3 int sparse
 , i4 int sparse
 , i5 int sparse

 , v1 nvarchar(255) sparse
 , v2 nvarchar(255) sparse
 , v3 nvarchar(255) sparse
 , v4 nvarchar(255) sparse
 , v5 nvarchar(255) sparse
 )

插入sparsetable(dummy1,b1,i1,v1)值('x',1,1,'123') - 无法创建一个大小为8054的稀疏数据的行,该行大于允许的最大稀疏数数据大小为8019。

插入sparsetable(dummy1,b1,i1)值('x',1,1) - 无法创建一个大小为8042的稀疏数据的行,该行大于允许的最大稀疏数据大小8019。 / p>

插入sparsetable(dummy1,b1)值('x',1) - 无法创建一个大小为8032的稀疏数据的行,该行大于允许的最大稀疏数据大小8019。

有人可以解释这些数字吗?

谢谢

0 个答案:

没有答案