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

Область применения:SQL Server среда выполнения интеграции SSIS в Фабрика данных Azure

Внимание

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

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

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

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

Для синхронизации начальной нагрузки и обработки изменений применяются следующие операции.

Операция Описание
ResetCdcState Эта операция предназначена для сброса постоянного состояния CDC, связанного с текущим контекстом CDC. После выполнения этой операции текущий максимальный номер LSN из таблицы LSN-timestamp sys.fn_cdc_get_max_lsn становится началом следующего диапазона обработки. Эта операция требует создания соединения с базой данных-источником.
ОтметитьНачалоЗагрузки Операция используется в начале пакета начальной загрузки для записи текущего номера LSN в базу данных-источник перед тем как пакет начальной загрузки начинает читать исходные таблицы. Для этого требуется соединение с базой данных-источником для вызова sys.fn_cdc_get_max_lsn.

Если вы выберете MarkInitialLoadStart при работе в SQL Server CDC (то есть не в среде Oracle), то в диспетчере подключений нужно указать пользователя с правами db_owner или sysadmin.
ЗавершитьНачальнуюЗагрузку Эта операция используется в конце пакета начальной загрузки для записи текущего номера LSN в базу данных-источник после того, как пакет начальной нагрузки завершит чтение исходных таблиц. Номер LSN определяется путем записи текущего времени при осуществлении данной операции и последующего запроса таблицы сопоставления cdc.lsn_time_в базе данных CDC для поиска любого изменения, которое произошло в последующее время.

Если вы выберете MarkInitialLoadEnd при работе в SQL Server CDC (то есть не в среде Oracle), то в диспетчере подключений нужно указать пользователя с правами db_owner или sysadmin.
MarkCdcStart Эта операция применяется, когда начальная загрузка выполняется из базы данных снимков. В таком случае обработка изменений должна начинаться сразу после LSN моментального снимка. Можно указать имя базы данных моментальных снимков, которую следует использовать, а задача управления CDC запрашивает у SQL Server LSN моментального снимка. Предусмотрена также возможность непосредственно указать номер LSN моментального снимка.

Если вы выберете MarkCdcStart при работе в SQL Server CDC (то есть не в среде Oracle), то в диспетчере подключений нужно указать пользователя с правами db_owner или sysadmin.

Для управления диапазоном обработки предназначены следующие операции:

Операция Описание
ПолучитьДиапазонОбработки Эта операция используется перед вызовом потока данных, в котором применяется поток исходных данных CDC. Он задает диапазон значений LSN, который поток исходных данных CDC считывает при вызове. Этот диапазон хранится в переменной пакета служб SSIS, которая используется источником CDC во время обработки потока данных.

Дополнительные сведения о сохраненных состояниях см. в разделе Определение переменной состояния.
ОтметитьОбработанныйДиапазон Эта операция выполняется после каждого запуска CDC (после успешного завершения потока данных CDC) для записи последнего LSN, который был полностью обработан при запуске CDC. При следующем вызове GetProcessingRange на выполнение эта позиция становится началом диапазона обработки.

Обработка сохраняемого состояния CDC

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

Задача «Управление CDC» поддерживает два типа сохранения состояния

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

  • Автоматическое сохранение состояния. Информация о состоянии CDC хранится в таблице в базе данных. Информация о состоянии хранится под именем, предоставленным в свойстве StateName в таблице, указанной в свойстве Таблица для хранения состояния , которую можно найти в диспетчере соединений, выбранном для сохранения состояния. По умолчанию используется диспетчер соединений источника, однако обычно это диспетчер соединений целевого объекта. Задача управления CDC обновляет значение состояния в таблице состояний, и это изменение фиксируется в составе объемлющей транзакции.

Обработка ошибок

Задача «Управление CDC» может сообщать об ошибке в следующих случаях:

  • Не удается считать постоянное состояние CDC или обновить постоянное состояние.

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

  • Чтение состояния CDC не является согласованным.

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

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

Настройка задачи управления CDC

Свойства могут быть заданы с помощью конструктора SSIS или программным путем.

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

Определение переменной состояния

Редактор задач управления CDC

Диалоговое окно Редактор задачи «Управление CDC» служит для настройки задачи «Управление CDC». Конфигурация задачи CDC Control включает определение соединения с базой данных CDC, операции задачи и информации об управлении состоянием.

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

Чтобы открыть редактор задачи управления CDC

  1. В SQL Server Data Tools откройте пакет SQL Server 2019 Integration Services (SSIS), имеющий задачу управления CDC.

  2. На вкладке Поток управления дважды щелкните задачу "Управление CDC".

Параметры

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

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

  • Отметить начало начальной загрузки. Эта операция используется при выполнении начальной загрузки из активной базы данных без моментального снимка. Он вызывается в начале пакета начальной загрузки для записи текущего номера LSN в базу данных-источник перед тем, как пакет начальной загрузки начинает читать исходные таблицы. Для этого необходимо соединение с базой данных-источником.

    Если вы выберете Mark Initial Load Start при работе в SQL Server CDC (то есть не в среде Oracle), то в диспетчере подключений нужно указать пользователя с правами db_owner или sysadmin.

  • Отметить конец начальной загрузки. Эта операция используется при выполнении начальной загрузки из активной базы данных без моментального снимка. Она вызывается в конце пакета начальной загрузки для записи текущего номера LSN в базу данных-источник после того, как пакет начальной нагрузки завершит чтение исходных таблиц. Этот номер LSN фиксируется на основании текущего времени операции, затем выполняется запрос к таблице сопоставления cdc.lsn_time_в базе данных CDC, в которой происходили изменения после этого времени.

    Если вы выберете Mark Initial Load End при работе в SQL Server CDC (то есть не в среде Oracle), то в диспетчере подключений нужно указать пользователя с правами db_owner или sysadmin.

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

    Эта операция используется вместо операций «Отметить начало начальной загрузки» и «Отметить конец начальной загрузки».

    Если вы выберете Mark CDC Start при работе в SQL Server CDC (то есть не в среде Oracle), то в диспетчере подключений нужно указать пользователя с правами db_owner или sysadmin.

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

    Дополнительные сведения о возможных состояниях CDC, которые хранятся, см. в разделе Определение переменной состояния.

  • Отметить обработанный диапазон: эта операция используется в пакете обработки изменений в конце выполнения CDC (после успешного завершения потока данных CDC), чтобы зафиксировать последний LSN, который был полностью обработан в ходе выполнения CDC. При следующем вызове GetProcessingRange на выполнение эта позиция определяет начало следующего диапазона обработки.

  • Сбросить состояние CDC: Эта операция используется для сброса постоянного состояния CDC, связанного с текущим контекстом CDC. После выполнения этой операции текущий максимальный номер LSN из таблицы LSN-timestamp sys.fn_cdc_get_max_lsn становится началом следующего диапазона обработки. Эта операция требует создания соединения с базой данных-источником.

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

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

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

LSN SQL Server для запуска CDC или имя снимка:
введите текущий номер LSN базы данных-источника или имя базы данных моментальных снимков, из которой выполняется начальная загрузка, чтобы определить начало CDC. Этот параметр доступен только в том случае, если параметр Операция управления CDC имеет значение Отметить начало CDC.

Дополнительные сведения об этих операциях см. в разделе CDC Control Task.

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

Диспетчер соединений для базы данных, где хранится состояние
Выберите из списка существующий диспетчер соединений ADO.NET или нажмите кнопку «Создать», чтобы создать новое соединение. Это подключение к базе данных SQL Server, содержащей таблицу состояния. Таблица состояния содержит сведения о состоянии.

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

Таблица для хранения состояния
Введите имя таблицы состояния, используемой для хранения состояния CDC. Указанная таблица должна содержать два столбца с именами name и state . Оба столбца должны иметь тип данных varchar (256).

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

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

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