循环公司名称ssis 2008

时间:2015-05-11 15:09:37

标签: sql-server ssis

我有来自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

但是如何在数据流任务中使用它呢?如何动态更改表名?

1 个答案:

答案 0 :(得分:1)

好的,我可以从你的其他帖子中看到你曾尝试过的事情,而不仅仅是询问如何做某事,所以我会帮你一把。

以下是如何执行此操作的示例:

Example_Loop_Container

以下是SSIS包的示例。

对于初学者,您需要3个变量:

Variables

我将两个字符串变量称为CompanyName和SQLStatement,以及一个我称之为CompanyList的对象变量。

我们首先需要填充CompanyList,我们在执行SQL任务中这样做。

Execute_SQL_Task

我们需要将结果集设置为"完整结果集",然后在SQL语句中,您需要添加获取完整公司名称的方式,例如"选择不同的名称从dbo.company",然后我们将这些结果存储在Object变量中:

Result_Set

现在将把所有结果存储到对象变量中。

我们现在需要设置我们的SQLStatement变量。变量只是一个字符串变量,但我们需要做的是将它设置为" EvaluateAsExpression" - " True":

EvaluateAsExpression

在表达式中我们需要输入以下内容:

"Select * from dbo.[" +  @[User::CompanyName] + "$Cust_ Ledger Entry].[Customer No_]"

现在我们可以使用ForeachLoop进行设置。

ForEachLoop

如上所述设置ForEachLoop,我们要在第一个表中评估"行和#34;反对" CompanyList"对象变量。

下一步是将其映射到我们的最终变量" CompanyName"将在SQL Expression中使用:

VariableMapping

在ForEachLoop中,转到VariableMapping选项卡,然后输入Select the" CompanyName"索引为0的变量,这将改变" CompanyName"每次循环运行时变量,有效地改变SQL语句变量,允许我们循环遍历每个公司。

最后一步是进入DFT并设置OLEDB源:

OLEDB Source

对于OLEDB源,我们需要从变量"中选择" SQL命令,然后我们在这里选择" SQLStatement"变量。

然后您可以按照自己的意愿继续进行DFT。