我目前正在尝试在SSIS中构建数据流,以从映射表中选择所有记录,其中相关Item表中存在ID列。有两个并发症:
更清楚一点,将数据从Staging环境迁移到Production。如果关联的项ID在那里,我只想将查找记录推送到prod。这里有一些psudo-TSQL给出了我正在努力实现的目标:
SELECT *
FROM [Staging_Server].[SourceDB].[dbo].[Lookup] L
WHERE L.[ID] IN (
SELECT P.[Item]
FROM [Production_Server].[TargetDB].[dbo].[Item] P
)
我还没有找到一种在SSIS中创建它的好方法。我想我已经创建了一个解决方法,包括对表进行排序和执行合并连接,但是对双方进行排序对性能的影响是不必要的。我正在为这个看似简单的数据流寻找更直接,更直观的设计。
答案 0 :(得分:2)
在数据流中执行此操作,您将获得源查询,无法过滤,并将其提供给作为子查询的查找组件。
这方面的挑战是SSIS可能是本地的,这意味着您将把所有数据从Stage Azure中提取到运行SSIS的服务器并将其推送回Prod Azure实例。
这是很多网络活动,当我正在阅读Azure定价指南时,我想只要你有合适的DTU,你就可以了。回到当天,你被指控为Reads而不是Writes,因此成语只是将你的所有数据推送到目标服务器,然后在那里进行比较,就像ElendaDBA提到的那样。我对实现的建议只是避免临时表或临时创建/销毁它们。只需实现为物理表,并在传输到生产之前截断并重新加载。
答案 1 :(得分:0)
您可以在临时服务器上创建临时表以将生产数据复制到其中。然后,您可以创建一个连接这两个表的查询。运行SSIS包后,您可以删除临时服务器上的临时表