Обработка операций вставки, обновления и удаления

В потоке данных пакета служб 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.

Разбиение операций вставки, обновления и удаления для обработки с помощью преобразования «Условное разбиение»

  1. На вкладке Поток данных добавьте преобразование «Условное разбиение».

  2. Соедините выход источника OLE DB с преобразованием «Условное разбиение».

  3. На нижней панели Редактора преобразования «Условное разбиение» введите три следующие строки, чтобы обозначить три выхода.

    1. Введите строку с условием CDC_OPERATION == "I", чтобы направить вставленные строки на выход для вставок.

    2. Введите строку с условием CDC_OPERATION == "U", чтобы направить обновленные строки на выход для обновлений.

    3. Введите строку с условием CDC_OPERATION == "D", чтобы направить удаленные строки на выход для удалений.

Следующий шаг

Когда строки разбиты для обработки, следующим шагом является применение изменений к назначению.

Следующий раздел:Применение изменений в назначении

Значок служб Integration Services (маленький) Будьте в курсе новых возможностей служб Integration Services

Чтобы загружать новейшую документацию, статьи, образцы и видеоматериалы от корпорации Майкрософт, а также лучшие решения от участников сообщества, посетите страницу служб Integration Services на сайтах MSDN или TechNet:

Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.