Sql server SSIS交叉数据库“;“在哪里?”;Azure中的条款(或同等条款)

Sql server SSIS交叉数据库“;“在哪里?”;Azure中的条款(或同等条款),sql-server,azure,ssis,Sql Server,Azure,Ssis,我目前正在尝试在SSIS中构建一个数据流,以从映射表中选择所有记录,其中相关项表中存在ID列。有两种复杂情况: 这两个表当前位于不同服务器上的不同数据库中 数据库在Azure中,我已经读到链接服务器不受支持 更清楚地说,任务是将数据从临时环境迁移到生产环境。我只想将查找记录推送到prod中,前提是相关的条目ID在其中。以下是一些psudo TSQL,为我试图实现的目标提供了明确的目标: SELECT * FROM [Staging_Server].[SourceDB].[dbo].[Lookup

我目前正在尝试在SSIS中构建一个数据流,以从映射表中选择所有记录,其中相关项表中存在ID列。有两种复杂情况:

  • 这两个表当前位于不同服务器上的不同数据库中
  • 数据库在Azure中,我已经读到链接服务器不受支持
  • 更清楚地说,任务是将数据从临时环境迁移到生产环境。我只想将查找记录推送到prod中,前提是相关的条目ID在其中。以下是一些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中创建这个的好方法。我想我已经创建了一个解决方案,包括对两个表进行排序和执行合并联接,但是对两侧进行排序对性能来说是一个不必要的影响。我正在为这个看似简单的数据流寻找一种更直接、更直观的设计。

    您可以在暂存服务器上创建一个临时表,将生产数据复制到其中。然后可以创建一个连接这两个表的查询。SSIS包运行后,您可以删除临时服务器上的临时表,在数据流中执行此操作,您可以将源查询sans filter馈送到作为子查询的查找组件中

    这方面的挑战是SSIS可能是本地的,因此这意味着您要将所有数据从Stage Azure拉到运行SSIS的服务器,并将其推回到Prod Azure实例


    这是大量的网络活动,在我阅读Azure定价指南时,我想只要你有合适的DTU,你就可以了。回到那个时代,您的费用是读取而不是写入,所以习惯用法是将所有数据推送到目标服务器,然后在那里进行比较,就像ElendaDBA提到的那样。我对实现的唯一建议是避免临时表或临时创建/销毁它们。只需实现为物理表,并在传输到生产之前截断和重新加载即可。

    这是最优雅的解决方案,感谢billinkc。我想我需要一个允许2个输入(一个用于数据,另一个用于过滤键)的组件,所以我最初拒绝了“查找”,但它实际上非常适合这种情况。