尝试在 SSIS 中导入 Excel 文件时出现“外部表不是预期格式”错误

Getting "External table is not in the expected format." error while trying to import an Excel File in SSIS

提问人:Paulo Felicio 提问时间:7/26/2019 最后编辑:HadiPaulo Felicio 更新时间:2/17/2021 访问量:11036

问:

我正在尝试通过 SSIS 将 Excel 文件 () 导入到 SQL Server 中的表中。但 SSIS 似乎无法将该文件识别为有效的 Excel 文件。我收到以下错误:.xls

错误 1:

[Excel 源代码 [86]]错误:SSIS
错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。
对连接管理器“Carga Base Original”的 AcquireConnection 方法调用失败,错误代码为 0xC0202009。在此之前可能会发布错误消息,其中包含有关 AcquireConnection 方法调用失败原因的详细信息。

错误2:

[SSIS.Pipeline]
错误:Excel 源验证失败,并返回错误代码0xC020801C。

错误3:

[连接管理器“Carga Base Original”]错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。
来源:“Microsoft Access 数据库引擎”
Hresult: 0x80004005
说明:“外部表不是预期的格式”。

我的连接管理器属性是 Excel 源,其属性如下所示:

Connection Manager Properties

我正在通过变量传递 Excel 文件路径。Excel 文件看起来正常且未损坏。我试图放置一个修复 Excel 路径,尝试将其放在连接字符串属性(修复路径和变量)中,但这没有任何帮助。

谁能帮我?

sql-server excel ssis oledb etl

评论


答:

4赞 Hadi 7/27/2019 #1

主要错误是:

外部表的格式不是预期的

当 Excel 文件已损坏并且无法由 Access 数据库引擎(OLE DB 访问接口)打开时,即使您可以从 Excel 中打开该文件,也会发生这种情况。在类似的情况下,手动打开文件并将其另存为新文件可能会奏效。

评论

1赞 Ciarán 7/28/2019
并不总是解决方案,但绝对值得首先检查。这个错误是一个通用的捕获,当它根本不了解来源时,OLEDB会把它排除在外。它假设它是一个数据库 - 因此是“表”,之后它有点耸耸肩,然后去“不知道”。这可能非常具有误导性。
1赞 Hadi 7/29/2019
@Ciarán 你是对的。我把“会做”改为“可能做”。
0赞 Paulo Felicio 7/27/2019
我按照你说的做了,并用新名称再次保存了文件,它起作用了。
0赞 whatbox 2/17/2021 #2

就我而言,将邮件合并的引用 Excel 文件另存为 .xls (Excel 97 - 2003) 有效。.xlsx 引发了“外部表不是预期格式”错误消息,但 .xls 没有。