Применение изменений в назначении
В потоке данных пакета служб Службы Integration Services, который выполняет добавочную загрузку информации об измененных данных, третьей и последней задачей является применение изменений к назначению. Один компонент потребуется для применения вставок, один — для применения обновлений и один — для применения удалений.
Примечание |
---|
Второй задачей в проектировании потока данных пакета, выполняющего добавочную загрузку информации об измененных данных, является разделение вставок, обновлений и удалений. Дополнительные сведения об этом компоненте см. в разделе Обработка операций вставки, обновления и удаления. Описание общего процесса создания пакета, выполняющего добавочную загрузку измененных данных, см. в разделе Система отслеживания измененных данных (SSIS). |
Применение вставок
Для применения вставок используется назначение «OLE DB», поскольку новые строки не требуют специальной обработки.
Обработка вставок с использованием назначения «OLE DB»
На вкладке Поток данных добавьте назначение «OLE DB».
Соедините выход, содержащий вставки из преобразования «Условное разбиение», с назначением «OLE DB».
В Редакторе назначения «OLE DB» на странице Диспетчер соединений выберите следующие параметры.
Выберите или создайте диспетчер соединений «OLE DB» для целевой базы данных.
Выберите параметр Режим доступа к данным, а затем выберите целевую таблицу или введите инструкцию SQL, содержащую целевые столбцы.
На странице Сопоставления в редакторе сопоставьте соответствующие столбцы из измененных данных со столбцами целевой таблицы.
Применение обновлений
Для применения обновлений используется преобразование «Команда OLE DB». Это преобразование используется потому, что для обновления новыми значениями столбцов по одной строке за раз требуется параметризованная инструкция UPDATE.
Примечание |
---|
Для применения обновлений можно также использовать компоненты назначения. Этот способ подразумевает использование компонентов назначения для сохранения строк в специально созданных временных таблицах. Затем с помощью задач «Выполнение SQL» проводятся массовые операции обновления и удаления строк, перенося данные из временных таблиц в объекты целевой базы данных. |
Обработка обновлений с помощью преобразования «Команда OLE DB»
На вкладке Поток данных добавьте преобразование «Команда OLE DB».
Соедините выход, содержащий обновления преобразования «Условное разбиение», с преобразованием «Команда OLE DB».
В окне Расширенный редактор команды OLE DB на вкладке Диспетчер соединений выберите существующий или создайте новый диспетчер соединений OLE DB для целевой базы данных.
В Расширенном редакторе команды OLE DB на вкладке Свойства компонента для SqlCommand введите параметризованную инструкцию UPDATE.
Например, инструкция UPDATE для таблицы «Заказчики» может иметь следующий синтаксис:
update CDCSample.Customer set TerritoryID = ?, CustomerType = ?, rowguid = ?, ModifiedDate = ? where CustomerID = ?
На вкладке Сопоставления столбцов в редакторе сопоставьте соответствующие столбцы из измененных данных с параметрами инструкции UPDATE.
Применение удалений
Для применения удалений используется преобразование «Команда OLE DB». Это преобразование используется потому, что для удаления по одной строке за раз на основании значения столбца, однозначно определяющего строку, требуется параметризованная инструкция UPDATE.
Примечание |
---|
Для применения удалений можно также использовать целевые компоненты. Этот способ подразумевает использование компонентов назначения для сохранения строк в специально созданных временных таблицах. Затем с помощью задач «Выполнение SQL» проводятся массовые операции обновления и удаления строк, перенося данные из временных таблиц в объекты целевой базы данных. |
Обработка удалений с помощью преобразования «Команда OLE DB»
На вкладке Поток данных добавьте преобразование «Команда OLE DB» в поток данных.
Соедините выход, содержащий удаления из преобразования «Условное разбиение», с преобразованием «Команда OLE DB».
Откройте расширенный редактор, чтобы настроить преобразование.
В окне Расширенный редактор команды OLE DB на вкладке Диспетчер соединений выберите существующий или создайте новый диспетчер соединений OLE DB для целевой базы данных.
В Расширенном редакторе команды OLE DB на вкладке Свойства компонента редактора для SqlCommand введите параметризованную инструкцию DELETE.
Например, инструкция DELETE для таблицы «Заказчики» может иметь следующий синтаксис:
delete from Customer where CustomerID = ?
На вкладке Сопоставления столбцов в редакторе сопоставьте соответствующий столбец из измененных данных с параметром инструкции DELETE.
Оптимизация вставок и обновлений с помощью функции MERGE
Обработку вставок и обновлений можно оптимизировать, объединив определенные параметры системы отслеживания измененных данных с помощью ключевого слова Transact-SQL MERGE. Дополнительные сведения о ключевом слове MERGE см. в разделе MERGE (Transact-SQL).
В инструкции Transact-SQL, получающей измененные данные, в качестве значения параметра row_filter_option при вызове функции cdc.fn_cdc_get_net_changes_<capture_instance> можно указать all with merge. Эта система отслеживания измененных данных работает более эффективно, если не требуется дополнительная обработка для различения вставок и обновлений. Если задается параметр all with merge, значение __$operation измененных данных равно 1 для удалений или 5 для изменений, вызванных вставками или обновлениями. Дополнительные сведения о функции Transact-SQL, используемой для получения измененных данных, см. в разделе Получение и интерпретация измененных данных. После получения изменений с параметром all with merge можно применить удаления и вывести оставшиеся строки во временную или промежуточную таблицу. Затем в нисходящей задаче «Выполнение SQL» можно использовать одну инструкцию MERGE для применения всех вставок или обновлений из промежуточной таблицы к назначению.
|