【问题标题】:update rows at target when not found in the source/staging table在源/临时表中找不到时更新目标行
【发布时间】:2019-01-23 13:02:55
【问题描述】:

我有一个流程,其中临时表每天都充满活跃的客户。如果在目标表中找到客户并且在临时表中不存在,则意味着他/她现在处于非活动状态,我必须更新目标表,将状态字段设置为 0。

使用 sql 任务很容易做到这一点。我想知道是否有更好的方法使用 ssis 任务并且没有 sql 代码。

【问题讨论】:

  • 您真正感兴趣的是变更数据捕获。 Microsoft Docs 在这里有很多信息:docs.microsoft.com/en-us/sql/integration-services/… - 但是,我的理解是它仅适用于 SQL Server 2016 及更高版本。您可以使用缓存转换和查找在较低版本上执行类似的操作,以比较您的源表和目标表。

标签: sql-server-2008 ssis


【解决方案1】:

不,最好的方法是使用 SQL 任务。 SSIS 不提供任何性能更好或更容易为此目的开发的东西。

【讨论】:

    【解决方案2】:

    有两种方法可以使用 sql 命令更新状态字段:

    1. 如果要在数据流中更新,可以使用“OLE DB 命令”

    2. 如果要在控制流中更新,可以使用“执行 SQL 任务”

    注意:如果您想使用“执行 SQL 任务”,您可能需要创建用户变量来传递上一个控制流步骤的值。您不需要在数据流中使用“OLE DB 命令”的用户变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多