我有来自navision的表格,其名称是
dbo.[CompanyName$Cust_ Ledger Entry].[Customer No_]
我有30家公司。我希望循环公司 我遵循此解决方案https://social.msdn.microsoft.com/forums/sqlserver/en-US/a13d39ab-968b-41f2-bf85-cb46db763d4e/variable-to-dynamically-change-tablename-for-data-flow-task
但是如何在数据流任务中使用它呢?如何动态更改表名?
答案 0 :(得分:1)
好的,我可以从你的其他帖子中看到你曾尝试过的事情,而不仅仅是询问如何做某事,所以我会帮你一把。
以下是如何执行此操作的示例:
以下是SSIS包的示例。
对于初学者,您需要3个变量:
我将两个字符串变量称为CompanyName和SQLStatement,以及一个我称之为CompanyList的对象变量。
我们首先需要填充CompanyList,我们在执行SQL任务中这样做。
我们需要将结果集设置为"完整结果集",然后在SQL语句中,您需要添加获取完整公司名称的方式,例如"选择不同的名称从dbo.company",然后我们将这些结果存储在Object变量中:
现在将把所有结果存储到对象变量中。
我们现在需要设置我们的SQLStatement变量。变量只是一个字符串变量,但我们需要做的是将它设置为" EvaluateAsExpression" - " True":
在表达式中我们需要输入以下内容:
"Select * from dbo.[" + @[User::CompanyName] + "$Cust_ Ledger Entry].[Customer No_]"
现在我们可以使用ForeachLoop进行设置。
如上所述设置ForEachLoop,我们要在第一个表中评估"行和#34;反对" CompanyList"对象变量。
下一步是将其映射到我们的最终变量" CompanyName"将在SQL Expression中使用:
在ForEachLoop中,转到VariableMapping选项卡,然后输入Select the" CompanyName"索引为0的变量,这将改变" CompanyName"每次循环运行时变量,有效地改变SQL语句变量,允许我们循环遍历每个公司。
最后一步是进入DFT并设置OLEDB源:
对于OLEDB源,我们需要从变量"中选择" SQL命令,然后我们在这里选择" SQLStatement"变量。
然后您可以按照自己的意愿继续进行DFT。