【问题标题】:SSIS Dynamic population of Excel File NameExcel 文件名的 SSIS 动态填充
【发布时间】:2016-03-01 22:14:14
【问题描述】:

我编写了一个 SSIS 包来将数据从 Excel 源上传到 OLE DB 目标 - 但是,当我希望使用 ForeachLoop 容器从多个 Excel 文件中加载数据时,我遇到了错误。我已按照以下链接中包含的教程进行操作:

https://msdn.microsoft.com/en-us/library/ms345182.aspx

除了需要动态填充的变量 strFileName 之外,所有配置都是正确的。从下面的屏幕截图可以看出,我的变量保持空白:

我不确定如何执行此操作。是否有可用于动态填充此变量的表达式或函数?

【问题讨论】:

  • 错误是什么,是什么引发的?为什么要提出问题而不发布错误?
  • 错误:数据流任务中的 0xC0202009,Excel 源 [36]:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E37。错误:数据流任务中的 0xC02020E8,Excel 源 [36]:打开“Sheet1$”的行集失败。检查对象是否存在于数据库中。错误:数据流任务中的 0xC004706B,SSIS.Pipeline:“Excel 源”验证失败并返回验证状态“VS_ISBROKEN”。错误:数据流任务中的 0xC004700C,SSIS.Pipeline:一个或多个组件验证失败。错误:数据流任务中的 0xC0024107:任务验证期间出现错误。

标签: excel ssis foreach-loop-container


【解决方案1】:

如果您希望为文件夹中的每个文件动态存储文件名,请使用循环中的变量映射,如下所示

Mapping

对于你的循环:

ForEach

请注意,您的变量始终为空白,因为该字段仅在您进入循环时更新。

【讨论】:

  • 我有您在图像中显示的那些设置,但我仍然收到以下错误:错误:数据流任务中的 0xC0202009,Excel 源 [36]:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E37。错误:数据流任务中的 0xC02020E8,Excel 源 [36]:打开“Sheet1$”的行集失败。检查对象是否存在于数据库中。错误:数据流任务中的 0xC004706B,SSIS.Pipeline:“Excel 源”验证失败并返回验证状态“VS_ISBROKEN”。
  • 检查您的 Excel 连接管理器和 DataFlowTask,验证您的源(或目标)。如果您使用变量作为文件名,请在 Task 属性中将 DelayValidation ='false' 更改为 'true'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多