SSIS Excel 连接管理器:文件只能在选择了错误的 Excel 版本时才能读取

Posted

技术标签:

【中文标题】SSIS Excel 连接管理器:文件只能在选择了错误的 Excel 版本时才能读取【英文标题】:SSIS Excel connection manager: files only readable with wrong Excel version selected 【发布时间】:2017-10-18 11:28:52 【问题描述】:

由于我必须重新安装我的开发 PC,我现在在加载已保存的 SSIS 项目或在 Visual Studio 2012 中创建新项目时遇到了一些问题。

当尝试对创建为 97-2003 格式的 .xls 文件使用 Excel 连接时,我收到以下错误:


无法检索连接管理器“Excel 连接管理器”的表信息。 使用连接管理器“Excel 连接管理器”连接到源失败


经过一些实验,如果发现 .xlsx 文件可以正常工作,并且当我将 ECM 设置为 MS Excel 2007 时可以读取 .xls 文件的工作表。

问题是,我不是唯一更新这些程序的人,在我的备份笔记本上,它们仍然可以在 Excel 版本 3 (97-2003) 中按预期工作,与文件相同。因此,当我将程序更新到 Excel 版本 4 以使其在 PC 上运行时,它对所有其他程序都无效。

不胜感激任何帮助解决此问题。

设置信息(PC 和笔记本电脑的基本设置相同):

Win10 x64、Office 2013 x86、SQL Server Data Tools 2012 (x86)、 在 PC 上:还安装了 Access Database Engine for Office 2010、2007

【问题讨论】:

看看这个链接有一些有用的建议docs.microsoft.com/en-us/sql/integration-services/… 【参考方案1】:

此问题是由 Windows 更新 KB4041678(仅安全更新)或 KB4041681(每月汇总)引起的,在我们的例子中是 KB4041687。由于此更新,我们有许多 SSIS 包失败,一旦实施了以下解决方法,SSIS 包就会备份并运行。

这些更新的已知问题包括:

“安装此更新可能会导致基于 Microsoft JET 数据库引擎的应用程序(Microsoft Access 2007 和更早版本或非 Microsoft 应用程序)在创建或打开 Microsoft Excel .xls 文件时失败。错误消息是“来自外部数据库驱动程序 (1)。(Microsoft JET 数据库引擎)"。"

Microsoft 正在制定解决方案,并将在即将发布的版本中提供更新。

建议的解决方法是下载并安装“Microsoft Access Database Engine 2010 Redistribute”

根据安装说明(“使用此下载”),安装 Access 数据库引擎后,您需要将 Excel 连接管理器 ConnectionString 提供程序从 Provider=Microsoft.Jet.OLEDB.4.0 更新为 Provider= Microsoft.ACE.OLEDB.12.0.

例如,之前

Provider=Microsoft.Jet.OLEDB.4.0;数据源=D:\Scatch\test.xls;Extended Properties="EXCEL 8.0;HDR=YES";

之后

Provider=Microsoft.ACE.OLEDB.12.0;数据源=D:\Scatch\test.xls;Extended Properties="EXCEL 8.0;HDR=YES";

【讨论】:

以上是关于SSIS Excel 连接管理器:文件只能在选择了错误的 Excel 版本时才能读取的主要内容,如果未能解决你的问题,请参考以下文章

SSIS Excel 连接管理器无法连接到源

ssis excel源无法在设计时获取连接管理器

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

SSIS动态excel阅读

SSIS Excel 目标 - 定义的字段过多

SSIS初学