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


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

Эта процедура описывает, как определить переменную пакета, в которой хранится информация состояния CDC.

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

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

В следующей таблице приведено общее описание компонентов значения переменной состояния CDC.

Компонент

Описание

<state-name>

Это имя текущего состояния CDC.

CS

Это обозначает точку начала текущего диапазона обработки (Current Start).

<cs-lsn>

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

CE

Это обозначает конечную точку текущего диапазона обработки (Current End). Наличие компонента CE в состоянии CDC указывает на то, что пакет CDC обрабатывается в данный момент или что произошел сбой пакета CDC до полного завершения обработки всего диапазона CDC.

<ce-lsn>

Это последний номер LSN, который должен быть обработан во время текущего выполнения CDC. Всегда предполагается, что последний последовательный номер, который должен быть обработан, является максимальным (0xFFF…).

IR

Это обозначает начальный диапазон обработки.

<ir-start>

Это номер LSN изменения прямо перед началом первоначальной загрузки.

<ir-end>

Это номер LSN изменения непосредственно после завершения первоначальной загрузки.

TS

Это обозначает отметку времени последнего обновления состояния CDC.

<timestamp>

Это десятичное представление 64-разрядного свойства System.DateTime.UtcNow.

ER

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

<short-error-text>

Это краткое описание ошибки.

Номера LSN и последовательные номера кодируются в виде шестнадцатеричной строки длиной до 20 знаков, представляющей значение LSN Binary(10).

В следующей таблице описаны возможные значения состояния CDC.

Состояние

Описание

(INITIAL)

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

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

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

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

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

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

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

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

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

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

TFSTART

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

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

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

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

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

ERROR

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

Ниже приведены примеры значений переменной состояния CDC.

  • ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/

  • ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/

  • TFEND/CS/0x0000025B000001BC0003/TS/2011-07-17T12:05:58.1001145/

  • TFSTART/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:43.9344900/

  • TFREDO/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:59.5544900/

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

  1. В SQL Server Data Tools откройте пакет Службы SQL Server 2012 Integration Services (SSIS), в котором имеется поток CDC, где необходимо определить переменную.

  2. Щелкните вкладку Обозреватель пакетов и добавьте новую переменную.

  3. Присвойте переменной имя, которое поможет обозначить ее как переменную состояния.

  4. Назначьте переменной тип данных String.

Не присваивайте переменной значение в составе ее определения. Значение должно быть задано задачей «Управление CDC».

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

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

См. также

Справочник

Редактор задачи «Выполнение CDC»

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

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