我将来自两个单独数据服务器的数据暂存到登台服务器上 - 一个服务器包含订单信息,第二个服务器包含该订单的送货信息。我正在查看过去5天内修改的所有订单。然后,我想要为这些修改后的订单加载所有相关的送货信息。因此,在这种情况下有3台服务器 - 订单服务器,送货服务器和登台服务器。
我尝试根据分阶段订单列表为每个容器做一个 - 但是在1000的结果集中,这是一个非常慢的解决方案。
我无法对订单或送货服务器进行更改 - 但我可以在登台服务器上执行任何操作。
我真正想要做的是创建一个带有订单号列表的Variable对象,然后在我的Shipping server select语句中有一个像这样的过滤器:
从[shipping_table]中选择[送货字段],其中[variable_list_of_order_nbrs]中的order_nbr
答案 0 :(得分:1)
如果您的送货信息编制良好,那么可以非常快速的一件事就是选择了“无缓存”的查找转换。
如果你需要回退多行,那可能会比较棘手,但是可以通过异步脚本转换来创建占位符行号,然后使用修改后的Lookup SQL语句(带有ROW_NUMBER()字段)来实现确保您只撤回所有必需的行和每行。
答案 1 :(得分:0)
我不确定这个解决方案的效率如何,但我的SQL技能刚刚出现在我脑海中: 注意:这需要更改订单服务和送货服务器提取逻辑
从源(订单服务)获取所有记录数据作为XML数据
DECLARE @Product Table (
ID INT)
INSERT into @Product
select top 10 ROW_NUMBER() over(order by a.name) as Rcount
from sys.all_objects a --used here for demo to generate series of numbers
--Return as XML
SELECT T.ID
FROM @Product T
FOR XML path('')
然后将此xml数据作为输入参数传递给Shipping服务器。从XML参数中获取连接输出的记录。
DECLARE @XMlVal XML
set @XMLVal = (SELECT T.ID
FROM @Product T
FOR XML path('')
)
--Read from XML
SELECT
prod.value('(.)[1]', 'int') AS 'ID'
FROM
@XMLVal.nodes('/ID') AS temp(prod)