Sql server 2008 SSI将数据从一个表复制到另一个表,其中不在目标表中
我正在服务器server1上创建一个SSIS包,该包查看另一个站点server2上sql db中的数据,并跨服务器复制相关行 所需的SQL语句是:Sql server 2008 SSI将数据从一个表复制到另一个表,其中不在目标表中,sql-server-2008,ssis,Sql Server 2008,Ssis,我正在服务器server1上创建一个SSIS包,该包查看另一个站点server2上sql db中的数据,并跨服务器复制相关行 所需的SQL语句是: SELECT * FROM server2.ordersTable WHERE OrderID Not In (SELECT OrderID FROM server1.ordersTable 这将根据订单id从server1中选择不在server2表中的数据 然后我需要将结果插入server1上的表中 我将如何处理这个问题?我需要什么组件等?您可以
SELECT *
FROM server2.ordersTable
WHERE
OrderID Not In (SELECT OrderID FROM server1.ordersTable
这将根据订单id从server1中选择不在server2表中的数据
然后我需要将结果插入server1上的表中
我将如何处理这个问题?我需要什么组件等?您可以为其中一台服务器创建链接服务器,首先为server1创建LinkedServer1,然后使用OPENQUERY,如: 挑选* 从server2.OrdersTable 哪里 医嘱ID不在 选择OrderID 从OPENQUERYLinkedServer中,选择LinkedServer1.OrdersTable中的OrderID
假设您可以使用OPENQUERY或server2到server1的直接链接服务器连接,如您的示例或@schrodinger代码中的答案所示,这将是最小化在线数据的最佳解决方案 但如果这不可用,您还有两个选择: 1您可以使用SSIS中的查找数据流转换来对照现有OrderID检查记录,并仅使用条件拆分转换推送新记录
2您可以将整个表从Server2传输到Server1上的临时表中,然后使用所发布代码的变体在Server1上进行比较。意识到这是一个旧线程 如果要在SSIS中执行此操作,我建议使用以下数据流: 两个数据源。 源A选择要移动的所有数据 源B从目的地选择密钥 将两个源运行到配置为左连接的合并连接中 将联接结果运行到条件拆分中,定义一个输出,其中来自源B的键为null 将适当的拆分输出运行到在适当表中插入所需行的目标。 有许多增强功能可用于支持其他功能,如处理更新和删除。还可以根据数据量的需要应用一些性能调整技巧,最简单的方法之一是根据包上次运行的时间检查源数据的修改日期,以减少源A选择的记录数