Определение переменной состояния
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
Внимание
Компоненты потока CDC, включая задачу управления CDC, источник CDC и разделитель CDC, устарели. Дополнительные сведения см. в объявлении.
Эта процедура описывает, как определить переменную пакета, в которой хранится информация состояния CDC.
Переменная состояния CDC загружается, инициализируется и обновляется с помощью задачи «Управление CDC» и используется компонентом потока данных «Источник CDC» в целях определения текущего диапазона обработки для записей с данными об изменениях. Переменная состояния CDC может быть определена в контейнере, который является общим для задачи «Управление CDC» и источника CDC. Это может быть на уровне пакета, но также может находиться в других контейнерах, таких как контейнер цикла.
Изменение значения переменной состояния CDC вручную не рекомендуется, однако полезно понять его содержимое.
В следующей таблице приведено общее описание компонентов значения переменной состояния CDC.
Компонент | Description |
---|---|
<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.
State | Description |
---|---|
(INITIAL) | Это начальное состояние перед запуском любого пакета в текущей группе CDC. Это состояние также имеет место, если состояние CDC пусто. |
ILSTART (запуск начальной загрузки) | Это состояние, когда запускается начальная загрузка пакета после вызова задачи «Управление CDC» операцией MarkInitialLoadStart . |
ILEND (завершение начальной загрузки) | Это состояние, когда начальная загрузка пакета успешно завершается после вызова задачи «Управление CDC» операцией MarkInitialLoadEnd . |
ILUPDATE (обновление начальной загрузки) | Это состояние после выполнения пакета обновления тонкого канала после начальной загрузки во время продолжения обработки диапазона начальной обработки. Это происходит после вызова задачи «Управление CDC» операцией GetProcessingRange . Если используется столбец __$reprocessing, для него установлено значение 1, чтобы указать, что пакет может повторно обрабатывать строки, уже на целевом объекте. |
TFEND (завершение обновления тонкого канала) | Это состояние, ожидаемое для регулярного выполнения CDC. Оно показывает, что предыдущее выполнение завершилось успешно и можно начинать новое выполнение с новым диапазоном обработки. |
TFSTART | Это состояние в неинициальном запуске пакета обновления веб-канала, после вызова операции GetProcessingRange для задачи управления CDC. Это означает, что запущен обычный запуск CDC, но не завершен или еще не завершен (MarkProcessedRange). |
TFREDO (повторная обработка обновления тонкого канала) | Это состояние операции 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 2019 Integration Services (SSIS), имеющий поток CDC, в котором необходимо определить переменную.
Выберите вкладку обозревателя пакетов и добавьте новую переменную.
Присвойте переменной имя, которое поможет обозначить ее как переменную состояния.
Назначьте переменной тип данных String .
Не присваивайте переменной значение как часть его определения. Значение должно быть задано задачей «Управление CDC».
Если вы планируете использовать задачу управления CDC с автоматической сохраняемостью состояния, переменная состояния CDC считывается из указанной таблицы состояния базы данных и обновляется обратно в ту же таблицу при изменении его значения. Дополнительные сведения о таблице состояния см. в редакторе задач управления CDC и CDC Control.
Если вы не используете задачу управления CDC с автоматической сохраняемостью состояния, необходимо загрузить значение переменной из постоянного хранилища, где его значение было сохранено при последнем запуске пакета и записать его обратно в постоянное хранилище при завершении обработки текущего диапазона обработки.