Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Изменение существующей схемы секционирования  [new]
sereban
Member

Откуда:
Сообщений: 38
Существует секционированная по месяцам таблица (по полю period). Все периоды располагаются в 2-х файловых группах: primary (месяцы текущего года) и history (все более ранние месяца).

Сейчас секции по файловым группам распределены вот так:

Partition Number---Min _Period---------------------Max _Period---------------------FileGroupName
1------------------------ 4010-01-01 00:00:00.000---4012-12-01 23:59:59.000--- HISTORY read only
2------------------------ 4013-01-01 00:00:00.000---4013-01-31 23:59:59.000--- PRIMARY
3------------------------ 4013-02-01 00:00:00.000---4013-02-28 23:59:59.000--- PRIMARY
4------------------------ 4013-03-01 00:00:00.000---4013-03-31 23:59:59.000--- PRIMARY
5------------------------ 4013-04-01 00:00:00.000---4013-04-30 23:59:59.000--- PRIMARY
6------------------------ 4013-05-01 00:00:00.000---4013-05-08 17:12:16.000--- PRIMARY

Файловая группа HISTORY находится на отдельном диске в режиме READ ONLY. Необходимо сделать так, чтобы в файловой группе PRIMARY находились только последние 2 месяца (текущий и предыдущий). Т.е. переместить данные секций 2,3,4 в файловую группу HISTORY.

результат должен выглядеть так:
Partition Number---Min _Period---------------------Max _Period---------------------FileGroupName
1------------------------ 4010-01-01 00:00:00.000---4012-12-01 23:59:59.000 --- HISTORY read only
2------------------------ 4013-01-01 00:00:00.000---4013-01-31 23:59:59.000 --- HISTORY read only
3------------------------ 4013-02-01 00:00:00.000---4013-02-28 23:59:59.000 --- HISTORY read only
4------------------------ 4013-03-01 00:00:00.000---4013-03-31 23:59:59.000 --- HISTORY read only
5------------------------ 4013-04-01 00:00:00.000---4013-04-30 23:59:59.000 --- PRIMARY
6------------------------ 4013-05-01 00:00:00.000---4013-05-08 17:12:16.000 --- PRIMARY

ну и каждый месяц нужно будет, перемещать 1 секцию в HISTORY

Смотрел статью про сценарий "скользящее окно" https://www.sql.ru/articles/mssql/2005/073102partitionedtablesandindexes.shtml Но чет так и не понял возможно ли аналогичным способом сделать то, что я хочу. Пока что получилось отключить нужную мне секцию (2) в отдельную таблицу при помощи SWITCH PARTITION. Далее перенес эту таблицу (секцию 2) в файловую группу HISTORY. Теперь, для того чтобы присоединить эту таблицу обратно в секционированную таблицу мне нужно, чтобы в схеме секционирования у этой секции (2) была файловая группа HISTORY. Как это сделать с помощью команды ALTER PARTITION SCHEME я не знаю. Подскажите пожалуйста возможно ли вообще то-что я хочу реализовать подобным образом? или может не мучиться, а сделать другую таблицу и туда все перекидывать?

Сообщение было отредактировано: 20 фев 14, 03:48
10 май 13, 23:45    [14280461]     Ответить | Цитировать Сообщить модератору
 Re: Изменение существующей схемы секционирования  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
как вариант: 2 схемы секционирования для данных HISTORY и PRIMARY, при переключении (когда смените ФГ) легко "достроить" хисторную схему вправо, а у текущих удалить секции слева. Сами таблицы объединить через вьюху.
11 май 13, 10:54    [14281057]     Ответить | Цитировать Сообщить модератору
 Re: Изменение существующей схемы секционирования  [new]
sereban
Member

Откуда:
Сообщений: 38
Knyazev Alexey
как вариант: 2 схемы секционирования для данных HISTORY и PRIMARY, при переключении (когда смените ФГ) легко "достроить" хисторную схему вправо, а у текущих удалить секции слева. Сами таблицы объединить через вьюху.


Вариант с двумя таблицами не подходит.
11 май 13, 12:50    [14281196]     Ответить | Цитировать Сообщить модератору
 Re: Изменение существующей схемы секционирования  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
sereban
Knyazev Alexey
как вариант: 2 схемы секционирования для данных HISTORY и PRIMARY, при переключении (когда смените ФГ) легко "достроить" хисторную схему вправо, а у текущих удалить секции слева. Сами таблицы объединить через вьюху.


Вариант с двумя таблицами не подходит.


чем? через секционированное представление вы сможете работать, как с одной таблицей
11 май 13, 13:07    [14281210]     Ответить | Цитировать Сообщить модератору
 Re: Изменение существующей схемы секционирования  [new]
sereban
Member

Откуда:
Сообщений: 38
Knyazev Alexey
sereban
пропущено...


Вариант с двумя таблицами не подходит.


чем? через секционированное представление вы сможете работать, как с одной таблицей


Это гребаная 1С (Odin's ass). Если будет реструктуризация таблицы, мне даже страшно представить, что сделает платформа в таком случае.
11 май 13, 13:12    [14281220]     Ответить | Цитировать Сообщить модератору
 Re: Изменение существующей схемы секционирования  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
sereban
Knyazev Alexey
пропущено...


чем? через секционированное представление вы сможете работать, как с одной таблицей


Это гребаная 1С (Odin's ass). Если будет реструктуризация таблицы, мне даже страшно представить, что сделает платформа в таком случае.

для 1С-ки это будет прозрачно...вы ей вьюху подсунете с именем ваше таблицы TableName, а таблицы будут называться TableNameHistory и TableNameActual соответственно
11 май 13, 13:26    [14281241]     Ответить | Цитировать Сообщить модератору
 Re: Изменение существующей схемы секционирования  [new]
sereban
Member

Откуда:
Сообщений: 38
Knyazev Alexey
sereban
пропущено...


Это гребаная 1С (Odin's ass). Если будет реструктуризация таблицы, мне даже страшно представить, что сделает платформа в таком случае.

для 1С-ки это будет прозрачно...вы ей вьюху подсунете с именем ваше таблицы TableName, а таблицы будут называться TableNameHistory и TableNameActual соответственно


Для обращений к таблице согласен, что прозрачно.
Спасибо за вариант, но у меня получилось по другому.
Сейчас до конца доделаю и отпишусь. В общем получилось отключить секцию в отдельную таблицу, перестроить кластеризованный индекс на другую файловую группу (из primary в history), потом модифицировать существующую схему и функцию секционирования и включить обратно в секционированную таблицу отключенную секцию, находящуюся уже в другой ФГ. Самая затратная процедура при этом - это перестроение индекса для перемещения таблицы между ФГ.
11 май 13, 14:22    [14281304]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить