ssis - 无法在 SSIS 2017 中的 excel 连接管理器上使用表达式

标签 ssis

我正在尝试遍历目录中的 excel 文件并在 SSIS 中执行数据流任务。

For-Each 循环容器的设置似乎非常简单:

For-Each Loop

我映射到一个名为 FileNameTemp 的变量。

For-Each Loop 2

在 For-Each 循环内,我有一个数据流任务,其中源对象是一个带有 Excel 连接管理器的 Excel 源。我使用 FileName temp 设置 ExcelFileName 的文件名:

Excel File Manager

我的问题是每当我尝试运行包时,我都会收到以下错误:

[Connection manager "Excel Connection Manager"] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft Access Database Engine" Hresult: 0x80004005 Description: "Failure creating file.".

我找到了其他类似的帖子。我绝对有权写入此文件夹。如果我删除表达式并一遍又一遍地打开同一个文件,它就会起作用。我还在几乎每个级别上将 DelayValidation 设置为 true。

最佳答案

尝试从表达式定义中删除“C:...”。 For-Each 文件枚举器将提供完整路径。

将来您可以在数据流任务上设置断点并查看您在本地选项卡中设置的变量值。

关于ssis - 无法在 SSIS 2017 中的 excel 连接管理器上使用表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53070558/

相关文章:

sql - 获取 SSIS 中源平面文件的列列表

sql-server - 从 Postgres 迁移到 SQL Server 2008

sql-server - 尝试更改平面文件源错误输出列的 SSIS 问题

sql - SSIS 结果集、Foreachloop 和变量

xml - 如何构建这个使用 SSIS、XML 和 BizTalk 技术的项目?

SSIS - 如何在脚本任务中访问 RecordSet 变量

ssis - 如何在 ssis 包中的平面文件目标中保留空值

sql - 仅当给定查询不存在记录时,如何继续执行下一个任务?

sql-server - SSIS发送邮件文件附件失败

sql-server-2008 - 从 SQL Server 加载 SSIS 是否会影响数据库缓存?