Я полагаю, что ваша ситуация следующая: у вас есть правильный диапазон диапазона с самым низким граничным значением, равным 5, и таблица, которая разделена таким образом, например:
create partition function pf (int) as range right for values (5)
create partition scheme ps as partition pf to ([PRIMARY], [PRIMARY])
create table T (part_key int constraint PK_T primary key)
on ps (part_key)
Теперь, если вывведите значения 1, 2, 3, 4 и 5 в таблицу T и проверьте распределение значений в каждом разделе, вы найдете 1, 2, 3 и 4 в разделе 1 и 5 в разделе 2:
insert T values (1), (2), (3), (4), (5)
select part_key, $partition.pf(part_key) as partition from T
Чтобы получить каждое значение в своем собственном разделе, вам необходимо сделать следующее: - для каждого нового раздела добавить новую целевую файловую группу и - разделить диапазон разделов, начиная с максимального значения
Это можетвыглядит так:
alter partition scheme ps next used [PRIMARY]
alter partition function pf() split range (4)
alter partition scheme ps next used [PRIMARY]
alter partition function pf() split range (3)
alter partition scheme ps next used [PRIMARY]
alter partition function pf() split range (2)
Теперь, если вы еще раз проверите свое распределение значений, вы увидите, что все отдельные значения оказываются в отдельном разделе:
select part_key, $partition.pf(part_key) as partition from T
Но имейте в видучто это происходит вместе с перемещением данных, то есть все строки со значениями ключей разделов 1-4 необходимо физически переместить из исходного раздела 2 в новый раздел назначения.Так что, если таких строк миллионы, это займет некоторое время и взорвет ваш журнал транзакций.