鉴于源表包含DateTimeCreated和DateTimeUpdated列这一事实,更新目标表的最有效方法是什么?
答案 0 :(得分:1)
我想保持目标源同步避免a 截短。我正在寻找这种情况下的投注练习模式
我会避免最佳做法答案,但要提供足够的细节以做出适当的选择。您可以使用两种主要方法更新SSIS中的表,避免使用TRUNCATE - LOAD:
1)使用OLEBD COMMAND
如果符合以下条件,此方法很好:
此方法对许多列执行效果不佳,因为它执行逐行更新。依赖审计日期列可以是减少要更新的行数的好方法,但如果在源系统中更新行并且未更改审计列,则它也会导致问题。如果它有触发器,我建议只信任它,或者你可以确定没有人可以在桌面上执行更新。
此外,当有大量要映射的列或在数据流中进行大量转换时,此组件不足。例如,如果要将所有字符串列从unicode转换为非unicode,则混合中可能会有许多其他列,这会使映射和维护变得困难。此组件中的映射工具适用于大约10列,之后很快就会变得混乱。特别是因为您要映射到带编号的参数而不是列名。
最后,如果你在update语句中执行任何复杂的操作,它更适合于SQL代码,而不是在没有智能感知的组件编辑器中维护它,并且通常很难使用。
2)在数据流
之后暂存数据并在执行SQL任务中执行更新这种方法适用于OLEDB命令不好的所有原因,但也有一些缺点。需要维护更多代码:
这也意味着设置也需要更多时间。但是,它确实表现得非常好,并且代码更容易阅读和理解。正在进行的维护也很简单。
请参阅今天我碰巧就同一主题回答的其他问题的笔记:SSIS Compare tables content and update another