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


CDC Control Task

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

Внимание

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

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

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

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

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

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

Если вы выберете MarkInitialLoadStart при работе в SQL Server CDC (то есть не в среде Oracle), то в диспетчере подключений нужно указать пользователя с правами db_owner или sysadmin.
MarkInitialLoadEnd Эта операция используется в конце пакета начальной загрузки для записи текущего номера 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.

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

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

Дополнительные сведения о сохраненных состояниях см. в разделе Определение переменной состояния.
MarkProcessedRange Эта операция выполняется после каждого прогона 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 Control Task Editor

Диалоговое окно Редактор задачи «Управление CDC» служит для настройки задачи «Управление CDC». В процессе настройки задачи «Управление CDC» определяется соединение с базой данных CDC, операция задачи 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, будет указываться общее имя состояния. Это имя используется для подстановки строки состояния в таблице состояния