SSIS 代理键增量

SSIS Surrogate Key incrementation

我正在使用 SSIS 为具有代理键 (sg) 的数据仓库创建星型模式。

我的流程是这样的:

  1. 找到最大 sg(使用 SQL)

  2. 在数据流中:数据源-> 将 +1 添加到最大 sg 的 c# 脚本 -> 写入目标。

现在,使用固定尺寸它可以毫无问题地工作。每个添加的行都会获得顺序 sg。

然而,当我使用缓慢变化的维度并历史更新一行时,我得到以下信息:

sg_key  |  name | city | current_row
1       |  a    |  X   | true
2       |  b    |  Y   | true
3       |  c    |  Z   | false
4       |  d    |  H   | true
7       |  c    |  T   | true

现在,如果我错了请纠正我,但我一直认为 SSIS 在所有流程任务中一次推送一行,但看起来它首先为所有行生成所有 sg_keys然后通过流发送更新的行。

我对 SSIS 工作方式的理解有误吗?我该如何解决?

干杯, 马克.

如果您使用 SQL 服务器作为目标,为什么不使用 IDENTITY 列? (而不是 C# 脚本)

https://msdn.microsoft.com/en-us/library/ms186775.aspx

当您插入新行时,Identity 会自动增加您的列。如果您不更新此列,该值将不会更改。

阿尔诺