我需要将整个表从源数据库更新插入到多个目标数据库(所有 Azure SQL)。我有一个查找活动,它提取服务器/数据库名称列表并将其传递到 ForEach 循环,在其中我放置了一个复制数据活动,其中静态数据集作为源和动态目标。
我的问题是:每次循环运行时,这种安排都会影响源数据库吗?我实际上只需要提取数据一次,因为需要将完全相同的数据更新插入到所有目标数据库。有没有一种方法可以一次性提取数据并将其转储到内存中,而不是每次循环运行时都返回到源数据库?或者根据定义,我使用静态数据集作为源是否意味着每次管道运行只提取一次数据?
这些有任何意义吗? :)
在 Azure 数据工厂中,使用静态数据集作为
Source
中的 Copy Data activity
意味着每次管道运行时仅提取一次数据,而不是每次循环运行时提取数据。此行为是设计使然,它确保数据从源读取一次,然后针对 ForEach
循环的每次迭代进行处理,而不会多次访问源数据库。
因此,您可以放心,数据只会在管道运行开始时从源数据库中获取一次,并将存储在内存中以供 ForEach 循环的所有迭代使用,其中数据将被更新插入到多个目标数据库。