我正在服务器(server1)上创建一个SSIS包,该服务器查看另一个站点(server2)上的sql db中的数据并复制相关的行。
所需的SQL语句是:
SELECT *
FROM server2.ordersTable
WHERE
OrderID Not In (SELECT OrderID FROM server1.ordersTable
这将从server1中选择不在server2上的表中的数据(基于订单ID) 然后我需要将结果插入server1上的表
我该如何处理?我需要哪些组件等...?
答案 0 :(得分:1)
假设您可以在server2上使用OPENQUERY或直接链接服务器连接到server1(如您的示例或@ schrodinger代码中的答案),这将是最小化线路数据的最佳解决方案。
但如果没有,你还有两个选择:
1)您可以使用SSIS中的查找数据流转换来检查现有OrderID的记录,并仅使用条件拆分转换来推送新记录。
2)您可以将整个表从Server2转移到Server1上的临时表中,然后使用您发布的代码的变体在Server1上进行比较。
答案 1 :(得分:1)
意识到这是一个老线程......
如果您想在SSIS中执行此操作,我建议使用以下数据流:
可以进行许多增强以支持其他功能,例如处理更新和删除。还有一些性能调优技巧可以根据数据量的要求应用,其中最简单的方法是检查源数据的修改日期与上次运行包的时间,以减少源A选择的记录数。
答案 2 :(得分:0)
你可以为其中一个服务器创建一个链接服务器,首先说服务器1的LinkedServer1然后你就可以使用OPENQUERY了:
SELECT * FROM server2.OrdersTable 哪里 订单ID不在 ( SELECT OrderID FROM OPENQUERY(LinkedServer,'SELECT OrderID FROM LinkedServer1.OrdersTable) )