无法在SSIS 2017中的excel连接管理器上使用表达式
我正在尝试循环浏览目录中的excel文件,并在SSIS中执行数据流任务 For-Each循环容器的设置似乎非常简单: 我映射到一个名为FileNameTemp的变量 在For Each循环中,我有一个数据流任务,其中源对象是带有Excel连接管理器的Excel源。我使用文件名临时设置ExcelFileName的文件名: 我的问题是,每当我尝试运行包时,都会出现以下错误: [连接管理器“Excel连接管理器”]错误:SSIS错误代码 DTS_E_OLEDBERROR。发生OLE DB错误。错误代码: 0x80004005。OLE DB记录可用。资料来源:“Microsoft Access 数据库引擎“Hresult:0x80004005说明:”创建失败 档案。” 我找到了其他类似的帖子。我绝对有权限写这个文件夹。如果我删除这个表达式,然后一遍又一遍地打开同一个文件,它就会工作。我还将DelayValidation在几乎所有级别上设置为true。尝试从表达式定义中删除“C:…”。For Each文件枚举器将给出完整路径无法在SSIS 2017中的excel连接管理器上使用表达式,ssis,Ssis,我正在尝试循环浏览目录中的excel文件,并在SSIS中执行数据流任务 For-Each循环容器的设置似乎非常简单: 我映射到一个名为FileNameTemp的变量 在For Each循环中,我有一个数据流任务,其中源对象是带有Excel连接管理器的Excel源。我使用文件名临时设置ExcelFileName的文件名: 我的问题是,每当我尝试运行包时,都会出现以下错误: [连接管理器“Excel连接管理器”]错误:SSIS错误代码 DTS_E_OLEDBERROR。发生OLE DB错误。错
将来,您可以在数据流任务上设置断点,并查看在“局部变量”选项卡中设置的变量值。相同的答案,比@mike Baron的答案更详细的是,在ForEach循环容器中,单选按钮被选中为“完全限定”,结果被推入变量
@[用户::FileNameTemp]
在指定的源文件夹C:\SourceCode\ExcelSourceFinancialReconciliation中找到的每个文件都将以
- C:\SourceCode\ExcelSourceFinancialReconciliation\file1.txt
- C:\SourceCode\ExcelSourceFinancialReconciliation\file2.csv
- C:\SourceCode\ExcelSourceFinancialReconciliation\file2.xls
ExcelFilePath
属性上设置表达式时,只需按原样使用@[User::FileNameTemp]
,表达式将路径加倍,以便Excel尝试查找
C:\SourceCode\ExcelSourceFinancialReconcilliation\file1.txt\C:\SourceCode\ExcelSourceFinancialReconcilliation\file1.txt
作为一般规则,仅在与SSIS中的“对象”关联的表达式中使用直接变量。Property1=@variable原因是,您无法在求值中设置断点来确定@Property1=“Foo”+@variable无效的原因。如果您创建自定义变量@Property1=“Foo”+@Variable,然后分配@Property1=@Property1Variable,您可以在包中放置断点,然后检查SSIS变量的值。这样更容易发现问题
可能对这个问题有帮助的其他答案
天哪,我真不敢相信我错过了。