Компоненты потока CDC

Применяется к:sql Server SSIS Integration Runtime в Фабрика данных Azure

Внимание

Компоненты потока CDC, включая задачу управления CDC, источник CDC и разделитель CDC, устарели. Дополнительные сведения см. в объявлении.

Компоненты отслеживания измененных данных по Attunity для Microsoft SQL Server 2019 Integration Services (SSIS) помогают разработчикам служб SSIS работать с CDC и снизить сложность пакетов CDC.

Компоненты CDC служб SSIS предназначены для работы с компонентом CDC SQL Server, где исходные таблицы являются одной базой данных SQL Server или базой данных Oracle (при использовании Службы Oracle CDC для SQL Server). Поддерживаются секционированные таблицы.

В компоненты входят компоненты потока управления и потока данных, которые рационализируют чтение и обработку информации об изменениях в пакетах служб SSIS. Компоненты можно добавить в библиотеку компонентов в Microsoft SQL Server, но устанавливаются отдельно.

Далее представлены компоненты отслеживания измененных данных Attunity.

Компонент потока управления CDC.

CDC Control Task

Компоненты потока данных CDC.

Источник «CDC»

Разделитель CDC

Установка

В этом разделе описаны процедуры установки компонентов CDC для служб Microsoft SQL Server 2019 Integration Services (SSIS).

Компоненты CDC для служб SSIS упаковываются с помощью конструктора и службы отслеживания измененных данных Майкрософт для Oracle Attunity для SQL Server. Скачиваемые компоненты входят в пакет дополнительных компонентов SQL Server. Скачать компоненты пакета дополнительных компонентов можно со страницы Microsoft® SQL Server® 2016 Feature Pack(Пакет дополнительных компонентов Microsoft® SQL Server® 2016).

Поддерживаемые версии

Поддержка версий SQL Server

Компоненты CDC для служб SSIS поддерживаются во всех поддерживаемых версиях Microsoft SQL Server. В настоящее время поддерживаются версии SQL Server с SQL Server 2012 по SQL Server 2017.

Поддержка версий операционной системы

Компоненты CDC для служб SSIS поддерживаются для следующих операционных систем и платформ:

  • Windows 8 и 8.1
  • Windows 10
  • Windows Server 2012 и 2012 R2
  • Windows Server 2016

Запуск программы установки

Перед запуском мастера установки убедитесь, что sql Server SQL Server Data Tools закрыт. Затем выполните указания мастера установки.

Перезапуск службы SSIS

После установки компонентов CDC необходимо перезапустить службу служб SSIS, чтобы убедиться, что компоненты работают правильно при разработке пакетов в SQL Server Data Tools.

После установки компонентов отображается сообщение. Нажмите кнопку Да в открывшемся окне.

Удаление компонентов Microsoft CDC

Источник CDC, разделитель CDC и задача «Управление CDC» удаляются с помощью мастера удаления. Если вы используете SQL Server SQL Server Data Tools для разработки пакетов, убедитесь, что sql Server Data Tools закрыт перед запуском мастера удаления.

Льготы

Компоненты CDC для компонентов СЛУЖБ SQL Server Integration Services позволяют разработчикам служб SSIS легко создавать пакеты служб SSIS, обрабатывающие измененные данные. Эти компоненты расширяют возможности разработчиков служб SSIS по работе с CDC и уменьшают сложность пакетов CDC.

Компоненты CDC служб SSIS предоставляют информацию об изменениях в виде, удобном для дальнейшей обработки с целью репликации, загрузки хранилища данных, обновления медленно изменяющихся измерений для OLAP, аудита изменений и других сценариев применения. Тип дальнейшей обработки определяется разработчиком служб SSIS.

Компоненты CDC служб SSIS предназначены для работы с функцией CDC SQL Server с таблицами изменений, которые находятся в той же базе данных SQL Server.

Приступая к работе с компонентами отслеживания измененных данных

Типичный пакет CDC обрабатывает изменения в группе таблиц. Часть базового потока управления этого типа пакета CDC показана на следующем рисунке. Такой пакет называется пакетом обработки тонкого канала.

Поток управления пакета для обработки тонкого канала

Этот поток управления службами SQL Server Integration Services содержит две задачи управления CDC и задачу Поток данных. Первая задача, которая называется Получить диапазон обработки CDC , устанавливает диапазон номеров LSN для изменений, которые обрабатываются в задаче потока данных, которая называется Обработка изменений. Этот диапазон определяется на основании данных, обработанных при последнем выполнении пакета и сохраненных в постоянном хранилище.

Дополнительные сведения об использовании задачи «Управление CDC» см. в разделах CDC Control Task и CDC Control Task Editor.

На следующем рисунке показан поток данных Обработка изменений , задающий общий порядок обработки изменений.

Поток данных обработки изменений

На этом рисунке показаны следующие действия.

  • Изменения для таблицы X — это источник CDC, который считывает изменения, внесенные в таблицу X в пределах диапазона обработки CDC, определенного в родительском потоке управления.

  • Разделитель CDC X используется для разбиения изменений на операции вставки, удаления и обновления. В этом сценарии предполагается, что источник CDC настроен для составления суммарных изменений, чтобы различные типы изменений можно было обрабатывать параллельно.

  • Затем отдельные изменения обрабатываются в следующих компонентах потока. На этом рисунке изменения вставляются в таблицы с использованием нескольких назначений ODBC, но в реальных случаях обработка может отличаться.

Дополнительные сведения об источнике CDC см. в разделе

Источник «CDC»

Редактор источника «CDC» (страница «Диспетчер соединений»)

Редактор источника «CDC» (страница «Столбцы»)

Редактор источника «CDC» (страница «Вывод ошибок»)

Дополнительные сведения о разделителе CDC см. в разделе

Разделитель CDC

Одним из основных вопросов, требующих внимания при создании пакетов CDC, является взаимодействие обработки изменений с начальной загрузкой (или начальной обработкой) данных.

Компоненты CDC поддерживают три различных сценария начальной загрузки и обработки изменений.

  • Начальная загрузка выполняется с моментальным снимком базы данных. В этом случае обработка изменений начинается с номера LSN события моментального снимка.

  • Начальная загрузка из замороженной базы данных. В этом случае во время начальной загрузки изменения не вносятся, текущий номер LSN выбирается в рамках периода начальной загрузки и обработка изменений начинается с этого номера LSN.

  • Начальная загрузка из активной базы данных. В этом случае, пока выполняется начальная загрузка, в базу данных вносятся изменения и нет точного номера LSN, с которого можно начать обработку изменений. В этом случае разработчик пакета начальной загрузки может зафиксировать текущий номер LSN в базе данных-источнике до и после начальной загрузки. Затем при обработке изменений следует соблюдать осторожность параллельно с начальной загрузкой, поскольку некоторые из обработанных изменений уже включены в начальную загрузку (например, операция вставки может завершиться с ошибкой повторяющегося ключа, поскольку вставленная строка уже считана в процессе начальной загрузки).

На следующем рисунке показан пакет служб SSIS, поддерживающий первые два сценария:

Первые два сценария обработки пакета служб SSIS

На следующем рисунке показан пакет служб SSIS, поддерживающий третий сценарий:

Третий сценарий обработки пакета служб SSIS

После пакета начальной загрузки несколько раз выполняется пакет обновления тонкого канала в соответствии с расписанием для обработки изменений, готовых к обработке.

Передача состояния обработки CDC из пакета начальной загрузки в пакет тонкого канала, а также между различными задачами в рамках каждого пакета выполняется посредством специальной строковой переменной пакета служб SSIS. Значение этой переменной называется состоянием CDC. Оно отражает текущее состояние обработки CDC для групп таблиц, которые обрабатываются пакетами начальной загрузки и тонкого канала.

Значение переменной состояния CDC должно храниться в постоянном хранилище. Оно должно считываться перед началом обработки CDC и сохраняться с текущим состоянием после завершения обработки. Задача загрузки и сохранения состояния CDC может выполняться разработчиком служб SSIS, но компонент управления CDC может автоматизировать эту задачу, сохраняя значение состояния CDC в таблице базы данных.

Соображения безопасности

В этом разделе перечислены некоторые соображения по безопасности, связанные с использованием компонентов CDC в службах SSIS.

Авторизация доступа к информации об изменениях

Пакетам обновлений для потокового канала требуется доступ к функциям CDC SQL Server. Такой доступ по умолчанию предоставляется членам предопределенной роли базы данных db_owner . Так как db_owner является мощной ролью, при определении экземпляров записи в SQL Server рекомендуется связать роль безопасности с каждым экземпляром записи, что позволяет пакету CDC служб SSIS использовать гораздо более ограниченного пользователя для обработки изменений.

Доступ к текущему номеру LSN базы данных CDC

Операции задачи «Управление CDC», помечающие начальный номер LSN для обработки изменений, должны иметь возможность определить текущий номер LSN базы данных CDC. Для поиска LSN компоненты используют процедуру sp_replincrementlsn из базы данных master. Разрешение на выполнение этой процедуры должно быть предоставлено имени входа, используемого для подключения к базе данных CDC SQL Server.

Доступ к таблице состояний CDC

Таблица состояний CDC используется для автоматического сохранения состояний CDC, которые необходимо обновить с помощью имени входа, используемого для подключения к базе данных CDC SQL Server. Так как эта таблица создается разработчиком служб SSIS, задайте системный администратор SQL Server в качестве пользователя, которому разрешено создавать базы данных SQL Server и выполнять задачи администрирования и обслуживания. Кроме того, системный администратор SQL Server, работающий с базами данных с поддержкой CDC, должен быть осведомлен о технологии и реализации SQL Server CDC.

Группирование таблиц для обработки CDC

Размер проектов баз данных меняется от нескольких таблиц до нескольких тысяч таблиц. Во время разработки пакетов начальной загрузки и пакетов CDC разумно группировать таблицы по группам меньшего размера для упрощения управления и повышения эффективности. В этом разделе перечислены различные соображения, относящиеся к сортировке таблиц по малым группам, когда таблицы в каждой группе проходят начальную загрузку и затем обновляются всей группой.

В шаблонах CDC, поддерживаемых компонентами CDC, предполагается, что такое группирование уже определено. Каждая группа определяет отдельный контекст CDC, который поддерживается отдельно от остальных групп. Для каждой группы создаются пакеты начальной загрузки и обновления тонкого канала. Обновления тонкого канала планируются для периодического выполнения в зависимости от частоты изменений, ограничений обработки (например, расхода ресурсов ЦП и ввода-вывода, влияния на другие системы) и требуемой задержки.

Таблицы группируются по следующим принципам.

  1. В соответствии с целевой базой данных. Все таблицы, которые записываются в различные целевые базы данных или проходят различную обработку, должны помещаться в различные группы CDC.

  2. Таблицы, которые связаны с ограничениями ссылочной целостности, должны помещаться в одну группу, чтобы избежать проблем со ссылочной целостностью в целевой базе данных.

  3. Таблицы, для которых допустима высокая задержка, можно помещать в одну группу, чтобы обрабатывать их с меньшей частотой и уменьшить общую загрузку системы.

  4. Таблицы с высокой частотой изменений следует размещать в группах меньшего размера, а таблицы с низкой частотой изменений можно размещать в группах большего размера.

Для каждой группы CDC создаются следующие два пакета.

  • Пакет начальной загрузки, который считывает весь диапазон данных из исходных таблиц и применяет их к целевым таблицам.

  • Пакет обновления тонкого канала, который считывает изменения, внесенные в исходные таблицы, и применяет изменения к целевым таблицам. Этот пакет следует регулярно выполнять по расписанию.

CDC State

С каждой группой CDC связано состояние, которое представляется строкой особого формата. Дополнительные сведения см. в разделе CDC Control Task. В следующей таблице показаны возможные значения состояния CDC.

State Description
0-(INITIAL) Состояние, которое имеет место до выполнения пакетов в текущей группе CDC. Это состояние также имеет место, если состояние CDC пусто.

Дополнительные сведения об операциях задачи «Управление CDC» см. в разделе CDC Control Task.
1-ILSTART (начало начальной загрузки) Это состояние, которое имеет место при запуске пакета начальной загрузки. Это происходит после вызова операции MarkInitialLoadStart в задаче «Управление CDC».

Дополнительные сведения об операциях задачи «Управление CDC» см. в разделе CDC Control Task.
2- ILEND (завершение начальной загрузки) Это состояние, которое имеет место при успешном завершении пакета начальной загрузки. Это происходит после вызова операции MarkInitialLoadEnd в задаче «Управление CDC».

Дополнительные сведения об операциях задачи «Управление CDC» см. в разделе CDC Control Task.
3-ILUPDATE (обновление начальной загрузки) Это состояние, которое имеет место после первого выполнения пакета обновления после начальной загрузки, пока продолжается обработка диапазона начальной обработки. Это происходит после вызова операции GetProcessingRange в задаче «Управление CDC».

Если используется столбец _$reprocessing , он получает значение 1, чтобы показать, что пакет может повторно обрабатывать строки, уже находящиеся в целевой базе данных.

Дополнительные сведения об операциях задачи «Управление CDC» см. в разделе CDC Control Task.
4-TFEND (завершение обновления тонкого канала) Это состояние, ожидаемое для регулярного выполнения CDC. Оно показывает, что предыдущее выполнение завершилось успешно и можно начинать новое выполнение с новым диапазоном обработки.
5 TFSTART (начало обновления тонкого канала) Это состояние, которое имеет место при последующих выполнениях пакета обновления после вызова операции GetProcessingRange в задаче «Управление CDC».

Оно показывает, что регулярное выполнение CDC начато, но еще не завершено или не завершено верно (MarkProcessedRange).

Дополнительные сведения об операциях задачи «Управление CDC» см. в разделе CDC Control Task.
6-TFREDO (повторная обработка обновлений тонкого канала) Это состояние операции GetProcessingRange , наступающее после TFSTART. Оно показывает, что предыдущее выполнение не завершилось успешно.

Если используется столбец __$reprocessing, он получает значение 1, чтобы показать, что пакет может повторно обрабатывать строки, уже находящиеся в целевой базе данных.
7-ERROR Группа CDC находится в состоянии ERROR.

Ниже представлена диаграмма состояний для компонентов CDC. Состояние ERROR наступает, если обнаруживается непредвиденное состояние. Ожидаемые состояния показаны на следующем рисунке. Тем не менее на диаграмме не показано состояние ERROR.

Например, в конце пакета начальной загрузки, когда состояние должно получить значение ILEND, но обнаруживается состояние TFSTART, группа CDC переходит в состояние ошибки, а пакет обновления тонкого канала не выполняется (выполняется пакет начальной загрузки).

Диаграмма состояний

После успешного выполнения пакета начальной загрузки пакет обновления тонкого канала многократно выполняется по заранее определенному расписанию для обработки изменений в исходных таблицах. Каждое выполнение пакета обновления тонкого канала означает выполнение CDC.

В этом разделе

См. также

CDC Control Task