定义状态变量
适用于:Azure 数据工厂中的 SQL Server SSIS Integration Runtime
重要
已弃用 CDC 流组件(包括 CDC 控制任务、CDC 源和 CDC 拆分器)。 有关详细信息,请参阅公告。
本过程介绍如何定义用于存储 CDC 状态的包变量。
该 CDC 状态变量由 CDC 控制任务加载、初始化和更新,并且由 CDC 源数据流组件用于确定针对更改记录的当前处理范围。 可对 CDC 控制任务和 CDC 源所共有的任何容器定义该 CDC 状态变量。 这可以在包级别,但也可以位于其他容器(如循环容器)上。
不建议手动修改 CDC 状态变量值,但了解其内容可能很有用。
下表提供了 CDC 状态变量值的组分的详细说明。
组件 | 说明 |
---|---|
<state-name> | 这是当前 CDC 状态的名称。 |
CS | 这标记当前处理范围开始点(当前开始)。 |
<cs-lsn> | 这是上一次 CDC 运行中处理的最后一个(日志序列号)LSN。 |
CE | 这标记当前处理范围结束点(当前结束)。 CDC 状态中的 CE 组分表示 CDC 包当前正在处理或 CDC 包在完全处理其 CDC 处理范围前失败。 |
<ce-lsn> | 这是当前运行的 CDC 中要处理的最后一个 LSN。 始终假定要处理的最后一个序列号是最大值(0xFFF...)。 |
IR | 这标记初始处理范围。 |
<ir-start> | 这是初始加载开始之前的最后一个更改 LSN。 |
<ir-end> | 这是初始加载结束之后的第一个更改 LSN。 |
TS | 这标记最后一个 CDC 状态更新的时间戳。 |
<>timestamp | 这是 64 位 System.DateTime.UtcNow 属性的十进制表示法。 |
ER | 当最后一个操作失败且包括错误原因的简短说明时显示它。 如果存在该组分,则它始终最后一个显示。 |
<short-error-text> | 这是简短的错误说明。 |
LSN 和序列号每个都作为一个十六进制的字符串编码,该字符串最多包含 20 位数字,表示 Binary(10) 的 LSN 值。
下表对可能的CDC 状态值进行了说明:
状态 | 说明 |
---|---|
(INITIAL) | 这是当前 CDC 组上运行任何包之前的初始状态。 这也是 CDC 状态为空时的状态。 |
ILSTART(初始加载已开始) | 这是初始加载包已开始、 MarkInitialLoadStart 操作调用 CDC 控制任务后时的状态。 |
ILEND(初始加载已结束) | 这是初始加载包已成功结束、 MarkInitialLoadEnd 操作调用 CDC 控制任务后时的状态。 |
ILUPDATE(初始加载更新) | 这是在初始加载后仍在处理初始处理范围期间运行滴送更新包时的状态。 这是 GetProcessingRange 操作调用 CDC 控制任务后的状态。 如果使用 __$reprocessing 列,则设置为 1 以指示包可能已在目标处重新处理行。 |
TFEND(滴送更新已结束) | 这是常规 CDC 运行应该出现的状态。 它指示前一次运行已成功完成,可以开始具有新的处理范围的新一轮运行。 |
TFSTART | 这是在 GetProcessingRange 操作调用 CDC 控制任务后,在棘手源更新包的非初始化运行状态。 这表示已启动常规 CDC 运行,但尚未完成或尚未完成(MarkProcessedRange)。 |
TFREDO(重新处理滴送更新) | 这是在 TFSTART 之后执行 GetProcessingRange 时出现的状态。 这表示上一次运行未成功完成。 如果使用 __$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 状态变量
在 SQL Server Data Tools中,打开具有您需要定义变量的 CDC 流的 SQL Server 2019 Integration Services (SSIS) 包。
选择“包资源管理器”选项卡,然后添加新变量。
为该变量赋予一个可作为状态变量识别的名称。
为该变量赋予 “字符串” 数据类型。
不要为变量指定一个值作为其定义的一部分。 该值必须由 CDC 控制任务设置。
如果计划将 CDC 控制任务与自动状态持久性一起使用,则 CDC 状态变量将从指定的数据库状态表读取,并在其值更改时更新回同一个表。 有关状态表的详细信息,请参阅 CDC 控制任务 和 CDC 控制任务编辑器。
如果不将 CDC 控制任务与自动状态持久性一起使用,则必须从保存包上次运行时保存其值的永久性存储中加载变量值,并在当前处理范围完成时将其写回到持久存储。