我使用SSIS为具有代理键(sg)的数据仓库创建星型模式。
我的流程是这样的:
找到max sg(使用SQL)
:数据源 - > c#脚本,为最大sg添加+1 - >写到目的地。
现在,使用固定尺寸,它可以正常工作。每个添加的行都会获得顺序sg。
然而,当我使用Slowly Changing Dimension并且历史上更新一行时,我得到以下内容:
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,然后发送通过流程更新了一行。
我是否理解SSISworks的错误方式?我该如何解决?
干杯, 标记
答案 0 :(得分:4)
如果您使用SQL Server作为目的地,为什么不使用IDENTITY列? (而不是C#脚本)
https://msdn.microsoft.com/en-us/library/ms186775.aspx
插入新行时,标识会自动增加列。如果您不更新此列,则该值不会更改。
阿诺