Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой процедуре описывается определение переменной пакета, в которой хранится состояние 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
В SQL Server Data Tools откройте пакет служб SQL Server 2014 Integration Services (SSIS), имеющий поток CDC, в котором необходимо определить переменную.
Перейдите на вкладку обозревателя пакетов и добавьте новую переменную.
Присвойте переменной имя, которое можно распознать как переменную состояния.
Присвойте переменной тип данных String .
Не присваивайте переменной значение как часть его определения. Значение должно быть задано задачей CDC Control.
Если вы планируете использовать задачу управления CDC с автоматической сохраняемостью состояния, переменная состояния CDC будет считываться из указанной таблицы состояния базы данных и будет обновлена обратно в ту же таблицу при изменении его значения. Для получения дополнительной информации о таблице состояния см. Задача управления CDC и Редактор задач управления CDC.
Если вы не используете задачу управления CDC с автоматической сохраняемостью состояния, необходимо загрузить значение переменной из постоянного хранилища, где его значение было сохранено при последнем запуске пакета и записать его обратно в постоянное хранилище при завершении обработки текущего диапазона обработки.