SSIS错误代码:0x80040E37

时间:2016-06-20 13:22:22

标签: excel ssis ssis-2008

有一个数据流任务,由excel源和sql目的地组成。当单独执行数据流任务时它运行良好。如果我执行此数据流在每个循环的a内,它会给出以下错误

  

[Excel Source [17]]错误:SSIS错误代码DTS_E_OLEDBERROR。一个OLE   发生了DB错误。错误代码:0x80040E37。

     

[Excel来源[17]]错误:打开"'工作表数据的行集$'"   失败。检查数据库中是否存在该对象。

     

[SSIS.Pipeline]错误:" Excel来源"验证失败并返回   验证状态" VS_ISBROKEN"。

有没有人有类似的问题!?

4 个答案:

答案 0 :(得分:6)

SSIS尝试在Excel文件中打开的工作表不存在。

答案 1 :(得分:2)

我遇到了同样的问题。而我发现原因是只读属性。

当我在数据流任务任务之前添加:文件系统任务,其中我设置了Excel属性ReadOnly=False它开始工作。

以下是一些屏幕。我希望它可以帮助别人。 :)

Reading files in FOr Each Loop Container

remove read-only property: File System Task Editor

答案 2 :(得分:2)

在我的情况下,此错误是由于Excel书籍的名称管理器中被引用的命名范围被删除。

答案 3 :(得分:0)

我不知道这对使用Excel source 组件是否有帮助,但是万一它有用:

要解决此问题,我只需要进入数据流任务,进入Excel组件(原始海报的源组件,我的目标组件),然后在第3个下拉列表中重新选择“名称Excel工作表的内容:“然后,程序包运行无误。

我猜想SSIS导入和导出向导最初生成的选项卡名称(与表名称匹配的选项卡名称)太长了:我的“创建表”步骤(Prep SQL任务)继续显示那些长表名,但是在电子表格中,标签名被截断了,在数据流任务的Excel组件中,我必须选择以“ $”结尾的电子表格标签名。

(请注意我的最初答案:
就我而言,我最初认为这是映射问题(问题消失后,重新映射是我所做的事情之一),但是... 当它再次发生时,我发现唯一必要的步骤就是我所做的 other 事情-重新选择Excel电子表格名称。)