Обработка операций вставки, обновления и удаления
В потоке данных пакета служб Integration Services, выполняющего добавочную загрузку информации об измененных данных, второй задачей является разделение вставок, обновлений и удалений. Затем можно использовать соответствующие команды, чтобы применить их к назначению.
Примечание |
---|
Первой задачей в проектировании потока данных пакета, выполняющего добавочную загрузку измененных данных, является настройка исходного компонента, который запрашивает измененные данные. Дополнительные сведения об этом компоненте см. в разделе Получение и интерпретация измененных данных. Описание общего процесса создания пакета, выполняющего добавочную загрузку измененных данных, см. в разделе Повышение эффективности добавочной загрузки с помощью системы отслеживания измененных данных. Законченные полнофункциональные образцы, в которых показано использование отслеживания измененных данных в пакетах, см. в образцах служб Integration Services в разделе Codeplex. |
Связывание понятных значений для разделения операций вставки, обновления и удаления
В приведенном примере запроса измененных данных функция cdc.fn_cdc_get_net_changes_<capture_instance> возвращает только столбец метаданных с именем __$operation. Этот столбец метаданных содержит порядковое значение, которое указывает операцию, вызвавшую изменение.
Примечание |
---|
Дополнительные сведения о запросе, использующем вызовы функции cdc.fn_cdc_get_net_changes_<capture_instance>, см. в разделе Создание функции для получения измененных данных. |
Связать порядковое значение с соответствующей операцией сложнее, чем использовать мнемонический код операции. Например, «D» может представлять операцию удаления, а «I» — операцию вставки. В примере запроса, созданном в разделе Создание функции для получения измененных данных, порядковое значение преобразуется в понятное строковое значение, которое возвращается в новом столбце. Это преобразование показано в следующем сегменте кода:
select
...
case __$operation
when 1 then 'D'
when 2 then 'I'
when 4 then 'U'
else null
end as CDC_OPERATION
Настройка преобразования «Условное разбиение» для направления операций вставки, обновления и удаления в разные выходы
Если требуется направить строки измененных данных на один из трех выходов, преобразование «Условное разбиение» подходит идеально. Это преобразование проверяет значение столбца CDC_OPERATION в каждой строке и определяет, было изменение вставкой, обновлением или удалением.
Примечание |
---|
Столбец CDC_OPERATION содержит понятное строковое значение, полученное из числового значения в столбце __$operation. |
Разбиение операций вставки, обновления и удаления для обработки с помощью преобразования «Условное разбиение»
На вкладке Поток данных добавьте преобразование «Условное разбиение».
Соедините выход источника OLE DB с преобразованием «Условное разбиение».
На нижней панели Редактора преобразования «Условное разбиение» введите три следующие строки, чтобы обозначить три выхода.
Введите строку с условием CDC_OPERATION == "I", чтобы направить вставленные строки на выход для вставок.
Введите строку с условием CDC_OPERATION == "U", чтобы направить обновленные строки на выход для обновлений.
Введите строку с условием CDC_OPERATION == "D", чтобы направить удаленные строки на выход для удалений.
Следующий шаг
Когда строки разбиты для обработки, следующим шагом является применение изменений к назначению.
Следующий раздел:Применение изменений в назначении
|
См. также