Столбец имеет тип данных, который не может участвовать в индексе columnstore

Я хочу создать кластерный индекс columnstore в таблице, используя следующий запрос:

CREATE CLUSTERED COLUMNSTORE INDEX cci
ON agl_20180319_bck

И я получаю эту ошибку:

Сообщение 35343, уровень 16, состояние 1, строка 6 Ошибка инструкции. Столбец memberOf имеет тип данных, который не может участвовать в индексе columnstore. Опустить столбец "memberOf".

«memberOf» имеет следующий формат: memberOf(nvarchar(max)).

Как побороть/игнорировать эту ошибку и что она означает?


person alexithymia    schedule 19.03.2018    source источник


Ответы (3)


Согласно документации. :

Столбцы, использующие любой из следующих типов данных, не могут быть включены в индекс columnstore:

nvarchar(max), varchar(max) и varbinary(max) (применяется к SQL Server 2016 и более ранним версиям, а также к некластеризованным индексам columnstore)

Либо измените тип столбца (если можете), либо просто не используйте индекс columnstore для этого конкретного столбца.

person Rigerta    schedule 19.03.2018
comment
Чем это означает, что мне нужно создать некластеризованный индекс columnstore? - person alexithymia; 19.03.2018
comment
Нет, это означает, что вы вообще не можете создать индекс columnstore для этого столбца. Вы можете попробовать изменить тип с nvarchar(max), чтобы ограничить его, например, установить длину 4000. Затем вы можете создать для него индекс columnstore. - person Rigerta; 19.03.2018

Вам нужно будет указать участвующие столбцы по отдельности, за исключением memberOf и любых других столбцов, которые нельзя использовать в индексе columnStore.

person Jimbo    schedule 19.03.2018
comment
Я попробовал то, что вы предложили, и получил сообщение: Операция не выполнена, поскольку указание списка ключей не разрешено при создании кластеризованного индекса columnstore. Создайте кластеризованный индекс columnstore без указания списка ключей. - person alexithymia; 19.03.2018

просто укажите длину переменных varchar вместо использования max. Сделал трюк для меня!

person Apratim Mukherjee    schedule 26.06.2018