Ssis 任务工厂Upsert组件-LastUpdate更新方法

Ssis 任务工厂Upsert组件-LastUpdate更新方法,ssis,qa,upsert,Ssis,Qa,Upsert,我最近在使用Practical Works的任务工厂组件时遇到了一种情况。我使用Upsert任务来处理插入和更新,并选择了LastUpdate Compare-Update-based'last Update'列值方法来发现记录中的更改 当软件包发布给QA时,我被告知它没有捕获更新。我的QA工程师正在运行包,更新目标中的记录,然后重新运行包,希望这些更新被覆盖。相反,它们仍然留在原地 一段时间后,我能够获得正在使用的脚本的副本: UPDATE dbo.Table SET OrderNum =

我最近在使用Practical Works的任务工厂组件时遇到了一种情况。我使用Upsert任务来处理插入和更新,并选择了LastUpdate Compare-Update-based'last Update'列值方法来发现记录中的更改

当软件包发布给QA时,我被告知它没有捕获更新。我的QA工程师正在运行包,更新目标中的记录,然后重新运行包,希望这些更新被覆盖。相反,它们仍然留在原地

一段时间后,我能够获得正在使用的脚本的副本:

UPDATE dbo.Table
SET  OrderNum = 3  , DTModified = GETDATE() -3
WHERE PK1 = 800
多次查询尝试未能使包将其识别为更改。根据来自PracticWorks和的文档,DtModified字段中的任何差异都应该触发更新

上次更新比较将比较源中的日期列和 目标中的日期列。如果日期不匹配,则该行为空 更新


不幸的是,文档似乎并不正确。在我将QA脚本改为

UPDATE dbo.Table
SET  OrderNum = 3  , DTModified = DTModified -3
WHERE PK1 = 800
ETL包能够识别记录已更改,并使用源系统中的数据元素覆盖更改的值

基于此测试,我假设Upsert组件的实际功能更符合以下几点:

上次更新比较将比较源中的日期列和 目标中的日期列。如果源列日期早于目标列日期,则该行为 更新

由于我无法在web上的任何其他地方找到此文档,因此将其发布到此处可能会导致对任务工厂Upsert组件不更新源中修改的记录有问题的用户进行类似搜索

虽然QA工程师在目标中更新的场景不会影响生产框,但我可以想到一些其他情况,这可能会影响某些内容,例如,如果源被回滚到以前的快照