Sql server 如何在excel源的foreach循环容器中动态传递excel连接字符串?

Sql server 如何在excel源的foreach循环容器中动态传递excel连接字符串?,sql-server,excel,ssis,etl,ssis-2012,Sql Server,Excel,Ssis,Etl,Ssis 2012,如何在excel源的foreach循环容器中动态传递excel连接字符串 在Foreach循环容器中,我将变量设置为Expressions/目录 在Excel源代码中,我已将Excel连接字符串映射到Foreach循环容器中提到的相同变量 然而,我得到了一个错误 当找不到特定的连接元素时,Connections集合会引发此错误 您可以通过3个步骤执行此操作: 在for each循环容器中,转到变量映射并将循环结果映射到变量中 在Excel连接管理器上,转到表达式,将ExcelFilePath属性

如何在excel源的foreach循环容器中动态传递excel连接字符串

在Foreach循环容器中,我将变量设置为Expressions/目录

在Excel源代码中,我已将Excel连接字符串映射到Foreach循环容器中提到的相同变量

然而,我得到了一个错误

当找不到特定的连接元素时,Connections集合会引发此错误


您可以通过3个步骤执行此操作:

  • 在for each循环容器中,转到变量映射并将循环结果映射到变量中
  • 在Excel连接管理器上,转到表达式,将
    ExcelFilePath
    属性表达式的值设置为在for each循环中创建的变量
  • 在数据流任务中,将
    延迟验证
    属性值更改为True
  • 有关详细的分步教程,请查看以下链接:


    当您想通过表达式动态更改Excel连接时,您想使用ExcelFilePath属性not ConnectionString:谢谢Tim,在我的情况下,您在回答屏幕截图上看到的文件夹路径是从变量中选择的。在变量中设置文件夹路径如何从变量中获取Excel文件路径?在Foreach循环集装箱中,我想我能理解。不要使用与Foreach循环相同的变量。我假设您的User::InboundFilePath是您要处理的所有excel文件所在的位置。创建第二个变量,然后在foreach循环中确保“Retrieve file name”设置为完全限定,在变量映射下选择使用索引0创建的第二个变量。现在通过表达式在ExcelFilePath属性上使用该新变量。foreach循环遍历它为新变量指定完整路径和名称的每个文件,然后将新变量传递给excel连接。@Hadi。。谢谢..让我检查一下我在表达式求值时是否遇到错误。。Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+@[User::TestFilePath]+”;扩展属性=“EXCEL 12.0 XML;HDR=YES”;不要将表达式分配给
    ConnectionString
    属性,请将其分配给
    ExcelFilePath属性
    ,或按以下方式编写:
    “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=“+@[User::TestFilePath]+”;Extended Properties=“”EXCEL 12.0 XML;HDR=YES”“;“
    。。。你没有从一个双引号开始谢谢。。但ExcelFilePath属性的问题是,我们需要提供excel文件的实际路径。在Dev环境中开发包之后,我们将转移到不同的环境,从作业调度器运行包。因此,最好将它放在连接字符串属性中,这样我们就可以实现这种动态性。这就是为什么我提到必须将
    延迟验证
    属性设置为
    True