0

我有一个有趣的问题:我需要对同一服务器中的两个数据库执行查询:

select a.id, b.name
from COMPANY_ORDERS.Table a 
left join COMPANY_USERS.Table B on a.id = b.id

要特别清楚:桌子总是!相同的名称,它是具有不同名称的数据库。

这并不难,它们在同一台服务器上。但现在!我有几个这样的对,例如:

MICROSOFT_ORDERS joins on MICROSOFT_USERS
IBM_ORDERS joins on IBM_USERS

如何让查询在每对 COMPANY_ORDERS 和 COMPANY_USERS 上动态执行?

(或者更好的是,我将如何在 SSIS 2012 中做到这一点?)

感谢您和我一起思考!

4

1 回答 1

2

根据“数据按摩师”,您可以使用 INFORMATION_SCHEMA.TABLES 生成动态查询。希望您对此进行了调查,因为下面的 SSIS 解决方案选项需要这样做。

对于 SSIS ..

  1. 使用“执行 SQL 任务” - 使用查询从数据库 1 中检索公司表列表。设置为返回完整结果集并保存到变量中(变量应该是对象类型)

  2. 添加“Foreach 循环容器”并将“执行 SQL 任务”连接到“Foreach 循环容器”。在 Foreach 循环编辑器 - 集合中 - 将枚举器设置为“Foreach ADO 枚举器”,将“ADO 对象源变量”设置为“执行 SQL 任务”中使用的变量(对象类型)。在 Foreach 循环编辑器 - 变量映射中,将每个值保存到字符串变量中。

  3. 将“数据流任务”添加到“Foreach 循环容器”中。在数据流任务中,您应该能够使用保存公司表名的变量来检索数据库 2 表名并构建您的动态查询来执行您需要的任何操作。

抱歉,没有足够的积分来发布任何图片。

于 2014-08-05T17:53:14.483 回答