Нет, вы не можете. Функция разделения должна быть детерминированной . Детерминированные функции всегда возвращают один и тот же результат каждый раз, когда они вызываются с определенным набором входных значений.
К сожалению, GetDate()
является недетерминированной функцией.
К сожалению, вы не можете использовать GetDate()
, потому что GetDate()
является недетерминированной функцией.
Подробнее см. http://shannonlowder.com/2010/08/partitioning/
@ Ismail
Есть альтернативы:
Создать битовый столбец LastMonth и функцию секционирования на основе столбца LastMonth. Вам необходимо обновлять поле каждый день, прежде чем начать использовать свои данные. Вам не нужно делать это ежедневно, может быть, лучший способ обновить столбец, который вы выбрали, чтобы пометить ваши свежие данные (или изменить функцию разделения), один раз в выбранный вами период (неделя / месяц / квартал) ).
Я не пробую этот подход, вам может потребоваться запустить некоторые операции по обслуживанию таблицы для полной производительности после обновления столбца.
Другая идея, которая может быть полезной, - создавать разделы для каждого месяца и менять файловые группы, когда начинается новый месяц. Например, если вы хотите, чтобы ваши последние данные были на быстром диске f: и история на s :, у вас будет PartitionJan на s: и PartitionFeb February на f :, когда начнется март, переместите PartitionFeb February на s: и начните использовать PartitionMartch на f :.