我有一个有趣的问题: 我需要在同一服务器上的两个数据库上执行查询:
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中做到这一点?)
Thanx和我一起思考!
答案 0 :(得分:2)
根据“Data Masseur”,您可以使用INFORMATION_SCHEMA.TABLES生成动态查询。 希望您对此进行调查,因为下面的SSIS解决方案选项需要这样做。
对于SSIS ..
使用“执行SQL任务” - 使用查询从数据库中检索公司表的列表1.设置为返回完整结果集并保存到变量(变量应为对象类型)
添加“Foreach循环容器”并将“执行SQL任务”连接到“Foreach循环容器”。在Foreach循环编辑器 - 集合中 - 将Enumerator设置为“Foreach ADO枚举器”,将“ADO对象源变量”设置为“执行SQL任务”中使用的变量(对象类型)。 在Foreach循环编辑器中 - 将每个值保存到字符串变量的变量映射。
将“数据流任务”添加到“Foreach循环容器”中。在数据流任务中,您应该能够使用包含公司表名的变量来检索数据库2表名,并构建动态查询以执行您需要的任何操作。
很抱歉,但没有足够的积分来张贴任何照片。