2014-10-29 61 views
0

使用SCD任务向导,我无法设置UpdateChangingAttributeHistory属性,它的默认值为false。我可以使用高级编辑器将其设置为true,但这不会更新生成的流,因此行为也没有改变。如果不重新运行向导(将UpdateChangingAttributeHistory设置为false),我需要做什么才能触发SSIS重新生成流程?SSIS 2012 - 设置缓慢变化维度UpdateChangingAttributeHistory为真

我的目标是有一个类型2 scd,当发生更改时更新事实表。

+0

在Slowly Changing Dimension属性窗口中,你没有'UpdateChangingAttributeHistory'属性?什么阻止你将它从假变为真。可能是我不明白你的问题。 – 2014-10-29 10:10:38

+0

的确我能做到!但这似乎并没有改变ssis的行为。我可能会误解此属性的功能,但在启用此功能后运行它后,我无法看到事实表的更改。 – 2014-10-29 10:14:25

+1

我总是在SSIS SCD任务中挣扎。最近,我认为SCD在性能方面表现最差。现在我们使用一组LookUp任务,OLEDB任务来实现SCD功能。只是增加,而不是你的问题的答案。 – 2014-10-29 10:16:44

回答

1

我无法解释为什么UpdateChangingAttributeHistory复选框在向导中灰显 - 这听起来很糟糕。但我可以告诉你它做了什么。如果这是假的,在默认情况下,它会改变OLE DB命令的WHERE子句中的“更改属性更新输出”到这样的事情:

... WHERE [SomeKeyColumn] = ? AND [SCD_EndDate] IS NULL 

如果你不使用的日期,这将是什么如[CurrentRowFlag] ='Y'

如果将该属性设置为true,则会删除WHERE子句的该部分,以便更新包含Type 1更改的所有行,即当前和历史。就是这样。这就是为什么如果您不重新生成组件,该标志不起作用,因为OLE DB命令没有改变。

因此,您可以在更改属性更新输出中手动进行更改,但如果将来重新生成SCD组件,那些更改可能会丢失。
正如评论中指出的那样,值得考虑使用其他组件创建此功能以提高性能和可维护性,尤其是如果它开始时很有趣。

+0

听起来对我来说很合理!我想我误解了结果会是什么:) – 2014-10-29 15:05:52