У меня есть таблица "X" и сделал следующее
- CREATE PARTITION FUNCTION PF1 (INT) КАК ДИАПАЗОН ЛЕВАЯ ДЛЯ ЗНАЧЕНИЙ (1, 2, 3, 4)
- CREATE PARTITION SCHEME PS1 AS PARTITION PF1 ALL TO ([PRIMARY])
- CREATE CLUSTERED INDEX CIDX_X ON X (col1) ВКЛ PS1 (col1)
эти 3 шага создали 4 логических раздела данных, которые у меня были.
Мой вопрос: как вернуть это разбиение в исходное состояние?
Ответ 1
Через 2 дня непрерывного поиска
Шаги:
-
DROP INDEX CIDX_X on X
/* удалить кластеризованные */
-
CREATE CLUSTERED INDEX CIDX_X1 ON X(col1) ON [PRIMARY]
/* Создайте еще один кластеризованный индекс в таблице, чтобы освободить его от схемы разбиения; Здесь часть ON [основной] является ключом к удалению схемы разделов из таблицы! */
-
DROP PARTITION SCHEME PS1
-
DROP PARTITION FUNCTION PF1
-
DROP INDEX CIDX_X1 ON X
/* удалите созданный фиктивный кластеризованный индекс, поскольку он был создан только для освобождения таблицы от схемы разбиения */
Ответ 2
Я обнаружил, что некоторые дополнительные шаги должны быть добавлены к ответу, указанному Storm, так как есть некоторые моменты, такие как... перед удалением кластерного индекса публикация должна быть отброшена, потому что она не позволит кластерному индексу получить до этого, и после того, как эта структура разделов и функция разделов должны быть воссозданы, и публикация также снова должна быть запущена.
Примечание. Я использую SQL 2012
Первичный ключ обычно является наиболее часто используемым кластеризованным ограничением, поэтому, когда я использую первичный ключ, считайте, что эти шаги также применимы и к кластерным ограничениям. Кроме того, PS = Схема разделения, PF = Функция разделения.
Некоторые подготовительные шаги:
- Сделайте публикацию с отбрасыванием script
- Сделайте публикацию о создании script
- Определите все таблицы, у которых есть зависимости с Схемой разделов, а также запишите их первичный ключ/кластерный индекс. Также обратите внимание на все поля, которые использует столбец первичного ключа (лучше создать script для первичного ключа или кластеризованный индекс)
- Сделайте script для затронутых таблиц.
- Сделайте script для PF и PS, которые под вопросом.
Все вышеперечисленное, используя SQL Management Studio, "сгенерируйте скрипты" при щелчке правой кнопкой мыши. И выберите drop и create.
Теперь, когда все будет готово.
1. Отбросьте публикацию (используйте созданный script)
2. Отбросьте ограничение основного ключа для тех таблиц, которые связаны с PS.
alter table [tablename] drop constraint [pk_name]
3. Сделайте фиктивное ограничение, но используйте те же поля, которые вы использовали в этом удаленном первичном ключе. CREATE CLUSTERED INDEX CIDX_X1 ON tablename(field1,field2,field3,field4) ON [PRIMARY]
4. Снимите схему и функцию разбиения.
DROP PARTITION SCHEME [PartitionSchemeName_PS]
GO
DROP PARTITION FUNCTION [PartitionfunctionName_PF]
GO
- Отбросьте указатель Dummy
DROP INDEX CIDX_X1 ON tablename
- Добавьте обратно кластерное ограничение индекса/первичного ключа (используя сгенерированные скрипты, как упоминалось ранее.
- Создайте функцию раздела и схему раздела (убедитесь, что количество элементов PS > PF, где PS = PF + 2 элементов)
- Добавьте обратно издателя (используйте сгенерированные скрипты)