Недавно я пытался перестроить старую базу данных, которая не была создана с файловыми группами (только по умолчанию PRIMARY
) и, среди прочего, переместить кучу таблиц в новую файловую группу , находящуюся на SAN. Я знаю, как перенести данные:Автоматическая миграция файловой группы в SQL Server
ALTER TABLE MyTable
DROP CONSTRAINT PK_MyTable WITH (MOVE TO [MyDB_Data])
ALTER TABLE MyTable
ADD CONSTRAINT PK_MyTable
PRIMARY KEY CLUSTERED (MyID)
ON [MyDB_Data]
Но проклят, если это не самая утомительная работа, которую я когда-либо приходилось. И это подвержено ошибкам. В какой-то момент я был на полпути (я полагаю, поскольку нет индикатора прогресса), перемещая таблицу на 30 ГБ, прежде чем я понял, что случайно включил один из столбцов значений в ПК. Поэтому мне пришлось начинать все заново.
Это еще хуже, когда в таблице много зависимостей. Тогда я не могу просто удалить первичный ключ; Мне нужно сбросить и воссоздать каждый внешний ключ, который ссылается на него. Это приводит к сотням строк шаблона; умножьте на 100 таблиц, и он станет полностью asinine. Мои запястья болят.
У кого-нибудь есть ярлык для этого? Могут ли быть какие-либо инструменты там (по цене с понятием одноразового использования), которые могут это сделать? Возможно, кто-то здесь должен был пройти этот процесс раньше и написать собственный инструмент/скрипт, который они не хотели бы делиться?
SSMS этого не сделает, очевидно, что он может генерировать сценарии миграции для некластеризованных индексов (и они должны быть индексами, а не UNIQUE
ограничениями - по крайней мере, в нескольких таблицах, к лучшему или к худшему, кластеризованный индекс на самом деле не является первичным ключом, это другое ограничение UNIQUE
).
Это не значит, что синтаксис настолько сложный, что я не могу написать код gen для него. По крайней мере, для основной части drop-and-rereate-the-primary-key. Но добавьте накладные расходы на выяснение всех зависимостей и создание сценариев drop/recreate для всех внешних ключей, и это начинает ощущаться, как будто это превысило этот порог, где больше работать, чтобы автоматизировать и полностью протестировать, чем просто делать каждую таблицу вручную, как в примере выше.
Итак, вопрос в следующем: Может ли этот процесс быть автоматизирован любым разумным способом? Есть ли альтернативы тому, что я написал выше?
Спасибо!
Выглядит достаточно разумно. Первая часть проста, так как у меня уже есть сценарий создания базы данных, просто не знал, что инструменты сравнения могут обрабатывать перемещения файловой группы. Благодарю. – Aaronaught