使用SCD任务向导,我无法设置UpdateChangingAttributeHistory属性,默认为false。我可以使用高级编辑器将其设置为true,但这不会更新生成的流,因此行为没有更改。如何在不重新运行向导的情况下触发SSIS重新生成流程(将UpdateChangingAttributeHistory设置为false),我需要做什么?
我的目标是让一个类型2的scd在发生更改时更新事实表。
答案 0 :(得分:1)
我无法解释为什么UpdateChangingAttributeHistory复选框在向导中显示为灰色 - 这听起来很糟糕。但我可以告诉你它的作用。如果这是默认值,则默认情况下,它会将“更改属性更新输出”的OLE DB命令的WHERE子句更改为以下内容:
... WHERE [SomeKeyColumn] = ? AND [SCD_EndDate] IS NULL
如果你没有使用日期,它会像[CurrentRowFlag] ='Y'
如果将该属性设置为true,则会删除WHERE子句的该部分,以便更新所有具有类型1更改的行,即当前和历史。就是这样。这就是为什么,如果不重新生成组件,该标志无效,因为OLE DB命令没有更改。
因此,您可以在更改属性更新输出中手动进行更改,但如果将来重新生成SCD组件,这些更改可能会丢失。
正如评论中所指出的,考虑使用其他组件创建此功能以提高性能和可维护性是值得的,特别是如果它开始时表现得很有趣。