Я создаю таблицу с 1000 столбцами. Большинство столбцов имеют тип nvarchar
. Таблица создана, но с предупреждением
Предупреждение. Создана таблица "Тест", но ее максимальный размер строки превышает разрешенный максимум 8060 байт. INSERT или UPDATE к этому стол будет терпеть неудачу, если результирующая строка превышает ограничение по размеру.
В большинстве столбцов таблицы уже есть данные (т.е. у 99% столбцов есть данные). Когда я пытаюсь обновить любой столбец после 310-го (где, когда все начальные 309 столбцов имеют некоторое значение), он дает ошибку:
Невозможно создать строку размера 8061, которая больше допустимой максимальный размер строки 8060.
Я вставляю эти данные во все начальные 308 столбцов
"Lorem ipsum dolor sit amet, consectetur adipisicing elit."
Когда я использую тип данных ntext
, то он позволяет мне обновлять около 450 столбцов, но кроме того, ntext
также не позволяет мне. Мне нужно обновить не менее 700 столбцов. Какой SQL Server не позволяет это делать. У меня есть сценарий, что я не могу переместить некоторые столбцы таблицы в другую таблицу.
На самом деле я работаю над существующим окном. Это очень большое приложение для Windows.
Фактически таблица, в которой я пытаюсь вставить до 700 данных столбцов nvarchar, динамически создается во время выполнения. Только в некоторых случаях требуется вставить 400-600 столбцов. Но в целом для этого требуется 100 -200 столбцов, которые я могу легко обрабатывать.
Проблема заключается в том, что я не могу разбить эту таблицу на несколько таблиц. Поскольку множество таблиц, созданных с этими структурами и именами таблиц, поддерживаются в другой таблице, то есть существует более 100 таблиц с этой структурой, и они создаются динамически. Для создания таблицы и управления ее данными используются 4-5 языков (С#, Java..) и WCF, Windows Service и Webservices.
Поэтому я не думаю, что было бы легко манипулировать таблицей и ее данными после разделения таблицы. Если я разбил таблицу, это потребует больших структурных изменений.
Итак, пожалуйста, предложите мне, что было бы лучшим способом решить эту проблему.
Я также попытался использовать разреженный столб, например:
Create table ABCD(Id int, Name varchar(100) Sparse, Age int);
Я также думал о ColumnStoreIndex, но моя цель не решена.
Разреженный столбец позволяет мне создать 3000 столбцов для таблицы, но это также ограничивает меня размером страницы.
Можно ли использовать его во временной таблице или при использовании любого другого объекта SQL-сервера?