В настоящее время у меня есть задание служб SSIS, которое выполняется для перемещения данных с одного компьютера sql 20008 на другой. Задание перемещает около 2 миллионов записей из 6 таблиц. Это занимает около 5-10 минут в зависимости от нагрузки на сервер, и это нормально. Поскольку данные перемещаются во временные таблицы, это не влияет на нагрузку на сервер.
Но моя проблема возникает тогда, когда я хочу объединить эти данные с соответствующими живыми таблицами. Это может занять около 15 минут, в течение которых таблицы очищаются, а затем снова заполняются. Меня интересует, каков наиболее эффективный способ перемещения этих данных между таблицами.
В настоящее время вот как это происходит:
перетаскиваемые столы
перестроить таблицы с индексами и ограничениями
вставить в select для перемещения данных
затем выполните все необходимые расчеты.
выполните следующую команду, чтобы перестроить все индексы после перемещения данных:
sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?')"
Я чувствую, что должен быть лучший способ, чтобы у пользователей было минимальное время простоя. У меня была мысль создать второй набор таблиц, а затем просто переименовать их, как только они будут готовы, но я не уверен, что это также лучший способ.
Я также только что прочитал о команде слияния, которая может быть лучше, так как мне не нужно отбрасывать таблицы и заполнять заново, что означает, что все данные останутся доступными, но трудно понять, изменятся ли записи, не просматривая почти все столбцы.
Буду признателен за любую помощь.