SSIS可变范围问题

时间:2015-06-25 09:52:55

标签: sql-server visual-studio-2012 ssis integration etl

我正在尝试使用foreach循环迭代文档中的一些Excel文件。因此,在我的控制流程中,我拖放For Each循环容器。然后我创建一个名为ExcelFilePath的新变量,并将其放在foreach循环范围内:

enter image description here

然后我编辑foreach循环并设置它的变量映射以映射到创建的变量:

enter image description here

大。所以现在在这个阶段我假设每次迭代这个foreach循环都会,它会将文件路径(或其他)存储到该变量中的当前excel文件中。

接下来,我插入数据流任务并添加Excel源。最初我创建一个Excel连接管理器,只是指向文档中的正确工作表并指定我想要的列。我测试它,看看预览效果很好。

enter image description here

尼斯。接下来我想更改连接管理器,以便它不会一直映射到同一个文件,而是使用foreach循环设置的变量,指定要使用的文件。所以我右键单击Excel Connection Manager>属性,并添加一个表达式。我为'property'选择'ExcelFilePath',我寻找我创建的将在foreach循环范围内的ExcelFilePath变量。但没有。无处可寻。

enter image description here

我在这里做错了什么?我已经遵循了关于这个主题的各种教程,但在我这边的foreach变量却无处可寻找?

修改

然后我继续将变量的范围从foreach循环范围更改为“package”范围。嘿,我现在可以看到它,完美。我选择它并发生这种情况:

enter image description here

编辑2

终于有了工作,但现在我还有另一个错误:

enter image description here

老实说,我不知道任何人都可以用这个完成任何工作。我把帽子给你。我的意思是Error Code 0x80004005,应该是什么意思?

1 个答案:

答案 0 :(得分:0)

我认为,我们不能将变量用于excel连接,因为Excel和SSIS中存在很多问题,因此会在运行时更改数据文件。

所以,你需要做下面的事情。

在数据流任务之前为每个循环容器添加一个脚本任务。 还要创建一个模板文件,其中包含具有相同标题的静态位置文件。

现在为每个循环迭代文件。我们为特定迭代处理的文件需要使用脚本任务替换模板。

Excel连接管理器始终指向模板文件。

  what ever file name you getting by for each loop need to replace template