У меня есть таблица, разделенная столбцом даты, и каждый раздел хранит данные за один месяц.
Кроме того, каждый раздел связан с одной файловой группой, и у каждой файловой группы ровно один файл базы данных (NDF).
Моя настройка довольно проста:
CREATE PARTITION FUNCTION MyPF (DATE)
AS RANGE RIGHT FOR VALUES (
'2019-09-01',
'2019-10-01',
'2019-11-01',
'2019-12-01');
CREATE PARTITION SCHEME MyPS PARTITION MyPF
TO (
FG_2019_08,
FG_2019_09,
FG_2019_10,
FG_2019_11);
Мне нужно регулярно обрезать случайный месяц (иногда даже из середины, не касаясь других месяцев).
Вместо сложного переключения я понял из BOL, что TRUNCATE TABLE имеет опцию WITH на моем SQL Server 2017, поэтому я могу просто сказать:
TRUNCATE TABLE MyTable WITH (PARTITIONS(3));
TRUNCATE TABLE MyTable WITH (PARTITIONS(1));
, который удалит все строки из раздела из файлов, связанных с FG_2019_08 и FG_2019_10.
Это прекрасно работает, и теперь у меня есть пустой файл, но SQL Сервер не позволяет удалить: он говорит, что он все еще используется. Насколько я понимаю, мне по-прежнему нужно настроить функцию разделов и схему разделов , чтобы удалить пустые файлы NDF.
Я извлек BOL, но я не могу обернуть голову, как изменить (объединить?) граничные значения, чтобы отразить указанные выше изменения. Они должны стать чем-то вроде этого, верно?