Невозможно создать строку с редкими данными размера
У меня есть таблица с одним столбцом 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.
Кто-нибудь может объяснить цифры?
Спасибо