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


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

В этой процедуре описывается определение переменной пакета, в которой хранится состояние CDC.

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

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

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

Компонент Описание
<state-name> Это название текущего состояния CDC.
CS Это помечает текущую начальную точку диапазона обработки (текущий запуск).
<cs-lsn> Это последний номер последовательности журналов (LSN), обработанный в предыдущем цикле работы CDC.
CE Это помечает текущую конечную точку диапазона обработки (текущий конец). Наличие компонента CE в состоянии CDC указывает на то, что в данный момент производится обработка пакета CDC, либо пакет CDC не завершился из-за ошибки в процессе обработки полного диапазона CDC.
<ce-lsn> Это последний LSN, который будет обработан в текущей сессии CDC. Всегда предполагается, что последний номер последовательности для обработки является максимальным (0xFFF...).
IR Это помечает начальный диапазон обработки.
<ir-start> Это LSN изменения непосредственно перед началом начальной загрузки.
<ir-end> Это LSN изменения сразу после завершения начальной загрузки.
TS Это указывает метку времени последнего обновления состояния CDC.
<метка времени> Это десятичное представление 64-разрядного свойства System.DateTime.UTCNow.
ER Это отображается при сбое последней операции и содержит краткое описание причины ошибки. Если этот компонент присутствует, он всегда будет отображаться последним.
<short-error-text> Это краткое описание ошибки.

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

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

Государство Описание
(INITIAL) Это начальное состояние перед запуском любого пакета в текущей группе CDC. Это состояние также имеет место, если состояние CDC пусто.
ILSTART (начальная загрузка запущена) Это состояние возникает при запуске начального пакета загрузки после вызова операции задачи управления CDC MarkInitialLoadStart.
ILEND (начальная загрузка завершена) Это состояние, когда начальный пакет загрузки завершается успешно, после MarkInitialLoadEnd вызова операции задачи управления CDC.
ILUPDATE (начальное обновление загрузки) Это состояние на запусках пакета обновления потокового канала после начальной загрузки, при этом все равно обрабатывается начальный диапазон обработки. Это осуществляется после вызова задачи управления CDC.

Если используется столбец __$reprocessing, оно имеет значение 1, чтобы указать, что пакет может повторно обрабатывать строки уже в целевом объекте.
TFEND (Trickle-Feed обновление завершено) Это состояние, ожидаемое для регулярного выполнения CDC. Оно показывает, что предыдущее выполнение завершилось успешно и можно начинать новое выполнение с новым диапазоном обработки.
TFSTART Это состояние при повторном запуске пакета обновления с постепенной подачей после вызова операции задачи управления CDC GetProcessingRange.

Это означает, что начато обычное выполнение CDC, но оно еще не завершено полностью или все еще не завершилось должным образом (MarkProcessedRange).
TFREDO (перепроцессинг обновлений Trickle-Feed) Это состояние на GetProcessingRange, которое происходит после TFSTART. Оно показывает, что предыдущее выполнение не завершилось успешно.

Если используется столбец __$reprocessing, оно имеет значение 1, чтобы указать, что пакет может повторно обрабатывать строки уже в целевом объекте.
ОШИБКА Группа 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 2014 Integration Services (SSIS), имеющий поток CDC, в котором необходимо определить переменную.

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

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

  4. Присвойте переменной тип данных String .

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

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

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

См. также

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