Изменить функцию и схему секционирования, когда таблица columnstore находится в той же базе данных

У меня есть таблица, которая еженедельно секционируется с определенной функцией секционирования и схемой. Самое главное, что эта таблица имеет кластеризованный индекс columnstore с той же схемой еженедельного секционирования.

Итак, теперь мне нужно добавить еще несколько диапазонов в функцию и схему разбиения. Что дает сбой с ошибкой, говорящей: «невозможно изменить функцию раздела, которая имеет непустой раздел ........», где в файле данных всего 4 КБ без загруженных данных.

Из одного из сообщений Ssms 2014 года я узнал, что нам нужно отключить кластерный индекс, изменить схему разделов и снова включить.

Пожалуйста, помогите в решении этого вопроса. Я использую sql 2016 и корпоративную версию. Заранее спасибо.


person crazyavengers    schedule 02.01.2018    source источник


Ответы (1)


Для индекса columnstore вам необходимо очистить раздел, который будет разделен. Это можно сделать:

  • перемещение данных в другой раздел (путем обновления его ключа раздела)
  • изменение схемы раздела (с предложением NEXT USED) и функции раздела (с предложением SPLIT RANGE)
  • перемещение данных обратно в правильный раздел.

Вышеупомянутое может быть сделано в одной транзакции.

В будущем (при условии, что данные разделены по периодам дат) рекомендуется иметь несколько пустых разделов, чтобы задача/задание обслуживания могла автоматически разделить разделы (и создать несколько новых разделов для будущих периодов) без каких-либо проблем.

В качестве альтернативы вы можете использовать ALTER TABLE с предложением SWITCH PARTITION, но этот подход менее эффективен. SWITCH PARTITION в основном используется для быстрого удаления старых разделов.

person Anton    schedule 02.01.2018
comment
Но в моей файловой группе или разделе нет данных. Это 16 КБ. Просто он пустой. Все еще в получении ошибки. Я могу добавить схему разделов, но не функцию разделов. - person crazyavengers; 03.01.2018
comment
Даже моя fjlegroup пуста, и выдает ту же ошибку. - person crazyavengers; 03.01.2018
comment
если у вас есть это сообщение об ошибке, раздел не пуст. Откуда ты знаешь, что он не пустой? Опубликуйте свой сценарий функции разделения и сценарий, который пытается разделить существующие диапазоны. - person Anton; 04.01.2018
comment
Ты человек. Это пропуск данных, загруженных в неправильный раздел. Это сработало. Спасибо большое @Anton - person crazyavengers; 05.01.2018