Я застрял с проблемой с разными представлениями.
Текущий сценарий:
Я использую пакеты SSIS для передачи данных с сервера A на сервер B каждые 15 минут. Создал 10 пакетов для 10 разных таблиц, а также создал 10 промежуточных таблиц для них. В задаче DataFlow он выбирает данные с сервера A с идентификатором больше последнего импортированного идентификатора и сбрасывает их в промежуточную таблицу (каждая таблица имеет свою собственную промежуточную таблицу). После задачи DataFlow я использую оператор MERGE для объединения записей из промежуточного хранения. таблицы в таблицу назначения, где идентификатор НЕ соответствует.
Проблема:
Это позаботится обо всех вставленных новых записях, но если однажды запись будет выбрана заданием SSIS и обновлена в источнике, я не смогу снова подобрать ее и не смогу получить обновленные данные.
Вопросы:
- Как я смогу получить обновление, слишком сильно влияющее на исходный сервер базы данных.
- Использовать ли оператор MERGE и выбирать 10 000 записей при каждом запуске? (каждые 15 минут)
- Использую ли я преобразование LookUp для выполнения обновлений?
- В некоторых таблицах содержится более 2 миллионов записей, и их число постоянно растет, так что какой подход для них лучше всего подходит?
ПРИМЕЧАНИЕ:
Я могу обрезать таблицы в месте назначения и повторно вставить полные данные для первого запуска.
Редактировать:
В источнике есть столбец «LAST_UPDATE_DATE», который я могу использовать в своем запросе.