Невозможно создать строку с редкими данными размера

У меня есть таблица с одним столбцом pk (bigint), одним не разреженным bigint, 30 k разреженными столбцами (20 k бит, 5 k int, 5 k nvarchar(255)) и набор столбцов.

Когда я пытаюсь обновить столбец nvarchar с помощью '.' в строке, где этот столбец содержит в настоящее время ноль, я получаю:

"Невозможно создать строку с разреженными данными размером 8028, который превышает допустимый максимальный размер разреженных данных 8023".

Когда я суммирую данные в ненулевые столбцы для этой строки, я получаю

a) << 8023 байта, при использовании 0,125 на бит, 4 на int и 2 + длина данных (..) на nvarchar.

И я получаю

b) >> 8023 при использовании 5 на бит, 8 на int и 4 + длина данных (..) на nvarchar.

Таким образом, число байтов на столбец в b) не может быть числом байтов, которое использует сервер sql для вычисления максимального значения 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
 )

вставить в разреженные (dummy1, b1, i1, v1) значения ('x', 1, 1, '123') - Невозможно создать строку с разреженными данными размером 8054, который превышает допустимый максимальный разреженный размер данных 8019.

вставить в разреженные (dummy1, b1, i1) значения ('x', 1, 1) - Невозможно создать строку, в которой есть разреженные данные размером 8042, который превышает допустимый максимальный разреженный размер данных 8019.

вставить в разреженные (dummy1, b1) значения ('x', 1) - Невозможно создать строку с разреженными данными размером 8032, который превышает допустимый максимальный разреженный размер данных 8019.

Кто-нибудь может объяснить цифры?

Спасибо

0 ответов

Другие вопросы по тегам