Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 SSI将数据从一个表复制到另一个表,其中不在目标表中_Sql Server 2008_Ssis - Fatal编程技术网

Sql server 2008 SSI将数据从一个表复制到另一个表,其中不在目标表中

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上的表中 我将如何处理这个问题?我需要什么组件等?您可以

我正在服务器server1上创建一个SSIS包,该包查看另一个站点server2上sql db中的数据,并跨服务器复制相关行

所需的SQL语句是:

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选择的记录数