Задача управления 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 становится началом следующего диапазона обработки. Эта операция требует создания соединения с базой данных-источником. |
MarkInitialLoadStart |
Операция используется в начале пакета начальной загрузки для записи текущего номера LSN в базу данных-источник перед тем как пакет начальной загрузки начинает читать исходные таблицы. Для этого требуется соединение с базой данных-источником для вызова sys.fn_cdc_get_max_lsn. Если будет выбрано MarkInitialLoadStart при работе с CDC SQL Server 2012 (т. е. отличной от Oracle), то пользователем, указанным в диспетчере соединений, должен быть db_owner или sysadmin. |
MarkInitialLoadEnd |
Эта операция используется в конце пакета начальной загрузки для записи текущего номера LSN в базу данных-источник после того, как пакет начальной нагрузки завершит чтение исходных таблиц. Номер LSN определяется путем записи текущего времени при осуществлении данной операции и последующего запроса таблицы сопоставления cdc.lsn_time_ в базе данных CDC для поиска любого изменения, которое произошло в последующее время. Если будет выбрано MarkInitialLoadEnd при работе с CDC SQL Server 2012 (т. е. отличной от Oracle), то пользователем, указанным в диспетчере соединений, должен быть db_owner или sysadmin. |
MarkCdcStart |
Эта операция используется, если начальная загрузка выполняется из базы данных моментальных снимков. В таком случае обработка изменений должна начаться с номера, который непосредственно следует за номером LSN моментального снимка. Можно указать имя используемой базы данных моментальных снимков, и задача «Управление CDC» запросит в SQL Server 2012 номер LSN моментального снимка. Предусмотрена также возможность непосредственно указать номер LSN моментального снимка. Если будет выбрано MarkCdcStart при работе с CDC SQL Server 2012 (т. е. отличной от Oracle), то пользователем, указанным в диспетчере соединений, должен быть db_owner или sysadmin. |
Для управления диапазоном обработки предназначены следующие операции:
Операция |
Описание |
---|---|
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 или программным путем.
В этом разделе
Связанные задачи
Определение переменной состояния
См. также
Техническую статью Установка системы отслеживания измененных данных Microsoft SQL Server 2012 для Oracle компании Attunity см. на сайте social.technet.microsoft.com.
Техническую статью Устранение неполадок в конфигурации системы отслеживания измененных данных Майкрософт для Oracle компании Attunity см. на сайте social.technet.microsoft.com.
Техническую статью Устранение неполадок в конфигурации системы отслеживания измененных данных Майкрософт для Oracle компании Attunity см. на сайте social.technet.microsoft.com.