Существует не так много авторитетных онлайн-материалов, предоставляющих подробности о миграции (помимо процедур, направленных лишь на обеспечение структурной целостности базы данных на новом / обновленном хосте). По этой причине, и поскольку эта миграция кажется вам запланированным / запланированным событием, я бы воспользовался возможностью перестроить все индексы, включая кластерные индексы .
Кому-то это может показаться «излишним», но какая лучшая возможность перебалансировки и переупаковки индексов / таблиц, предоставляя новый коэффициент заполнения, соразмерный с ожидаемым использованием CRUD, и в целом утверждая, что база данных здоровья в новом хозяине.
На практике я бы ...
ALTER DATABASE <database_name> SET COMPATIBILITY_LEVEL = 90;
DBCC CHECKDB(<database_name>)
-- WITH NO_INFOMSGS (I'd take the messages, I'm curious by nature ;-)
Как вы предлагаете, но тогда я бы перестроил все индексы для всех / большинства таблиц, даже (может быть, в частности ...) для очень больших таблиц. Чтобы быть уверенным, следует оценить время и относительный риск, связанный с такой операцией, но в большинстве случаев, даже с базами данных в 100+ миллионов строк, общие накладные расходы составляют порядка нескольких часов, время инвестировано, поскольку это может отложить будущие перестройки индекса. Что касается фактора риска, у вас, похоже, есть резервная копия ...
Что само собой разумеется ... Когда базовая таблица имеет кластеризованный индекс, и если необходимо также перестроить его, удалите все остальные индексы ранее, чтобы не тратить много времени на обновление некластеризованный индекс (без перестроения всерьез), а затем, конечно, воссоздать эти некластеризованные индексы.
В зависимости от количества рассматриваемых таблиц и индексов может быть полезно написать несколько небольших хранимых процедур для автоматизации удаления (и повторного создания индекса), хотя также может быть важно индивидуально проанализировать коэффициенты заполнения, пересчитать и другой параметр).