Поделиться через


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

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

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

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

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

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

Задача управления CDC

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

CDC-источник

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

Установка

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

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

Компоненты CDC для служб SSIS поддерживают следующие продукты Microsoft SQL Server:

  • Microsoft SQL Server 2012

  • Среда Microsoft SQL Server Data Tools для SQL Server 2008 или 2010

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

  • Windows Vista, 32-разрядная (x86) и 64-разрядная (x64) версии с пакетом обновления 2 (SP2)

  • Windows 7, 32-разрядная (x86) и 64-разрядная (x64) версии

  • Windows Server 2008, 32-разрядная (x86) и 64-разрядная (x64) версии с пакетом обновления 2 (SP2)

  • Windows Server 2008 R2, 64-разрядная версия (x64)

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

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

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

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

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

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

Источник CDC, разделитель CDC и задача «Управление CDC» удаляются с помощью мастера удаления. Перед удалением компонентов необходимо проверить следующие условия.

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

Преимущества

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

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

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

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

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

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

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

Дополнительные сведения об использовании задачи «Управление CDC» см. в разделах Задача управления CDC и Редактор задачи «Выполнение CDC».

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

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

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

  • Изменения для таблицы 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CDC State

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

Состояние

Описание

0-(INITIAL)

Состояние, которое имеет место до выполнения пакетов в текущей группе CDC. Это состояние также имеет место, если состояние CDC пусто.

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

1-ILSTART (начало начальной загрузки)

Это состояние, которое имеет место при запуске пакета начальной загрузки. Это происходит после вызова операции MarkInitialLoadStart в задаче «Управление CDC».

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

2- ILEND (завершение начальной загрузки)

Это состояние, которое имеет место при успешном завершении пакета начальной загрузки. Это происходит после вызова операции MarkInitialLoadEnd в задаче «Управление CDC».

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

3-ILUPDATE (обновление начальной загрузки)

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

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

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

4-TFEND (завершение обновления тонкого канала)

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

5 TFSTART (начало обновления тонкого канала)

Это состояние, которое имеет место при последующих выполнениях пакета обновления после вызова операции GetProcessingRange в задаче «Управление CDC».

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

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

6-TFREDO (повторная обработка обновлений тонкого канала)

Это состояние операции GetProcessingRange, наступающее после TFSTART. Оно показывает, что предыдущее выполнение не завершилось успешно.

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

7-ERROR

Группа CDC находится в состоянии ERROR.

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

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

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

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

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

Связанные задачи

См. также

См. также

Основные понятия

Задача управления CDC