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