SSIS 错误代码:0x80040E37

SSIS Error code: 0x80040E37

有一个数据流任务,它由 excel 源和 sql destination.When 单独执行数据流任务组成,它正在运行 good.If 我在 a 中执行这个数据流任务对于每个循环,它给出以下错误

[Excel Source [17]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E37.

[Excel Source [17]] Error: Opening a rowset for "'Sheet Data$'" failed. Check that the object exists in the database.

[SSIS.Pipeline] Error: "Excel Source" failed validation and returned validation status "VS_ISBROKEN".

有没有人遇到过类似的问题!?

SSIS 试图在您的 Excel 文件中打开的 sheet 不存在。

我遇到了同样的问题。正如我发现的那样,原因是只读 属性。

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

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

在我的例子中,这个错误是由于 Excel 图书的名称管理器中引用的命名范围被删除。

我不知道这对 Excel source 组件是否有帮助,但如果有帮助:

为了解决这个问题,我只需要进入数据流任务,进入 Excel 组件(原始海报的源组件,我的目标组件),并在第三个下拉列表中,重新select "Name of the Excel sheet:" 然后包运行 没有报错。

我想最初由 SSIS 导入和导出向导生成的选项卡名称 -- 与 table 名称匹配的选项卡名称 -- 太长了:我的 "create table" 步骤(准备 SQL 任务)继续显示那些长 table 名称,但在电子表格中选项卡名称被截断,并且在数据流任务的 Excel 组件中,我不得不 select以“$”结尾的电子表格选项卡名称。

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

我通过创建一个新文件 sheet 解决了这个问题,选择新文件,单击“预览”并选择回官方文件。

似乎当您更改文件或其他内容时,包仍在引用旧文件。执行我在下面提到的操作将解决问题。