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

Posted

技术标签:

【中文标题】SSIS Excel 连接管理器无法连接到源【英文标题】:SSIS Excel Connection Manager failed to Connect to the Source 【发布时间】:2014-07-16 19:23:23 【问题描述】:

我有一台能够使用导入向导创建和运行 Excel 导入任务的服务器。我正在尝试通过使用我正在该服务器上开发的 Visual Studio 2010 集成服务包来自动化该过程。

在尝试设计包时会出现问题。我添加了一个 excel 连接并将其指向本地磁盘上的 Excel 文件(我已经使用导入向导成功导入了同一个文件)。当我将 Excel 源添加到 DataFlow 并指定 excel 连接时,当我转到 Excel 工作表的名称下拉菜单时,我只看到“无法加载任何表或视图”并收到以下错误。

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

我在任何地方都找不到这个错误记录,我也不知道它为什么会失败。该目录已共享给经过身份验证的用户,并且该文件未在使用中。

任何想法如何调试此错误?我知道在 64 位模式下运行它可能会出现问题,但这适用于开发吗?

我应该补充一点,它是一个 excel 2007 文件 .XLSX,并且连接设置为 Excel 2007。

2019-11-08 下面 GavB841 的答案看起来很有希望,如果有人尝试过并且有效,请告诉我。 (我不再在这个领域工作。)

【问题讨论】:

是的,它确实适用于开发。您是否使用了 excel 文件的完全限定路径? 不,但我发现如果我将 excel 文件保存为 excel 97-2003,那么它可以正常工作,所以我希望我会发布一个关于它为什么会这样的新问题。 我也遇到了这个问题,保存为 97-2003 文件也对我有用,可能想在这里发布它作为解决方案。我被困了几个小时,这实际上不是一个修复,但至少它会让我重新开始工作。谢谢! 解决办法是什么?用户要求 Excel 文件在 Excel 2007+ 中 这篇文章对问题和解决方案进行了非常清晰详细的解释:madeiradata.com/load-data-excel-ssis-32-bit-vs-64-bit 【参考方案1】:

解决方法是,我将 excel 文件保存为 excel 97-2003 然后它可以正常工作

【讨论】:

嗨 PatFromCanada,如何使用 ssis 包将 excel 文件保存为 excel 97-2003。因为我的包将执行一个作业,所以我无法访问以保存文件手册。【参考方案2】:

我的回答与@biscoop 的回答非常相似,但我会详细说明一下,因为它可能适用于这个问题或其他人。

我有一个 .xls,它是从我们的一个 web 应用程序中提取的。 Excel 连接不起作用(错误消息:“无法加载表或视图”)。附带说明一下,当打开文件时,会出现一条警告,指出该文件来自在线资源并且内容需要激活。

我尝试将相同的文件保存为 .xlsx 并且它有效。 我尝试将同一个文件用另一个名称保存为 .xls 并且它也有效。 因此,作为最后一次测试,我只打开了源 .xls 文件,点击保存,连接正常。

简短回答:试试看是否打开文件并保存就行了。

【讨论】:

【参考方案3】:

我遇到了同样的问题。我认为@Rishit 的回答对我有帮助。 此问题与 32 位/64 位版本的驱动程序有关。我试图使用 SSIS 将 .xlsx 文件读取到 SQL Server 表中

我的机器在 Win 10 机器上预装了 Office 2016 64 位 使用 MS Access 我能够使用 ssis 读取 excel 97-2003 (.xls) 文件,但无法读取 连接 .xlsx 文件 我的要求是读取 .xlsx 文件 安装 AccessDatabaseEngine_X64 来读取 xlsx,这给了我 以下错误:

我卸载了 AccessDatabaseEngine_X64 并安装了 AccessDatabaseEngine 32 位,解决了这个问题

【讨论】:

【参考方案4】:

你可以试试这个:

卸载office365

然后只安装 Access Database Engine 2016 Redistributable 64 位

同时设置用于调试的项目配置属性 Run64BitRuntime = False

它应该可以工作。

【讨论】:

【参考方案5】:

如下所述:

解决方案: 转到https://marketplace.visualstudio.com/items?itemName=ProBITools.MicrosoftAnalysisServicesModelingProjects 并安装最新版本,它有一个修复程序来解决这个问题。

参考:https://developercommunity.visualstudio.com/content/problem/745991/could-not-load-file-or-assembly-microsoftdatawareh.html

已在内部实施了针对此问题的修复,并准备发布。一旦可供下载,我们将更新您。现在,请从https://marketplace.visualstudio.com/items?itemName=ProBITools.MicrosoftAnalysisServicesModelingProjects 安装最新的 SSAS 以解决此问题。给您带来不便,敬请见谅。

【讨论】:

【参考方案6】:

以下是适合我的解决方案

我刚刚将 Excel 文件保存为 Excel 97-2003 版本

【讨论】:

【参考方案7】:

在到处研究之后,我终于找到了临时解决方案。因为我已经尝试了所有安装访问驱动程序的解决方案,但我仍然面临同样的问题。

对于excel源, 在此步骤之前,您需要更改设置。将excel文件另存为2010格式.xlsx

同时设置调试 Run64BitRuntime = False 的项目配置属性

    拖放 Excel 源代码 双击excel源并连接excel。任何方式你都会得到同样的错误 no table or view cannot load.... 点击确定 右键单击excel源,点击显示高级编辑。 在那点击组件属性。 您可以看到 openrowset。在右侧,您需要输入您的 excel 工作表名称示例:如果在 excel sheet1 中,则您需要输入 sheet1$。即以美元符号结尾。然后点击确定。 现在您可以执行连接到目的地的其他工作。

我正在使用 Visual Studio 2017、SQL Server 2017、Office 2016 和 Microsoft Access Database 2010 引擎 32 位。操作系统 Windows 10 64 位。

这是临时解决方案。因为很多人都在寻找这类问题。最后我想通了,这个解决方案在任何网站上都没有。

【讨论】:

【参考方案8】:

好像没有安装 32 位版本的 Excel。记住 SSDT 是一个 32 位的 IDE。因此,当从 SSDT 访问数据时 使用 32 位数据提供程序。在外面运行包时 SSDT 以 64 位模式运行(并非总是如此,但大多数情况下)并使用 64 位数据提供程序。

请始终牢记,如果您想以 64 位运行您的软件包 (您应该瞄准)您将需要 32 位数据 提供者(用于 SSDT 开发)以及 64 位数据 提供者(用于在生产环境中执行包)。

我从以下网址下载了 32 位访问驱动程序:

Microsoft Access Database Engine 2010 Redistributable。

安装后,我可以看到工作表


来源:

Extracting Data From Excel with SSIS

【讨论】:

当我由于 Excel 97-2003 格式的行数过多(超过 500,000 行)而无法降级我的 Excel 文件时,这对我来说非常有效。 这也解决了我的问题。谢谢 此外,我必须在 Microsoft.Jet 的 Properties 窗口中更改 Connection String 中的 Provider。 OLEDB.4.0Microsoft.ACE.OLEDB.12.0 在我使用 Data Tool 64bit 和 Ms Office 64bit 之前它会返回错误,然后我安装 Ms Office 32bit 并更改 Project > Project Properties > Debugging > Run64bitRuntime > 中的属性(从 True 更改为 False) .现在它的工作很好。mssqltips.com/sqlservertip/5324/… 我正在使用带有 SSDT 的 VS 2017 预览版,我的电脑有 64 位操作系统,所以我安装了 AccessDatabaseEngine.exe 32 位版本,然后我尝试加载相同的,它显示了 excel 表的名称.谢谢+1【参考方案9】:

我发现我在 Excel 365 中创建的 Excel 文件与任何可用版本都不兼容。我在 97-2003 版本中重新保存了 excel 文件,当然在下拉列表中选择了该版本,它读取文件 OK。

【讨论】:

【参考方案10】:

这篇文章Extracting Data From Excel with SSIS 的建议为我解决了这个问题。

我下载了 MS Access 数据库引擎 2010 32 位驱动程序 来自那篇文章中的链接。

同时设置用于调试的项目配置属性Run64BitRuntime = False

在 SQL Server 2014 SSMS 中(集成服务目录 -> SSISDB -> 环境 -> 验证复选框 32 bit Runtime 中所有包的项目。

我的 SSIS 包现在可以在 VS 2013 和 SQL Server 2014 环境中运行。

【讨论】:

同上...缺少 32 位 Access 驱动程序对我来说是关键。我使用的是 SQL Server 2017 和 Visual Studio 2017。安装上述驱动程序后,工作簿中的选项卡显示在 Excel 数据源中。 您是否必须对最终运行此包的 SQL Server 进行任何更改?【参考方案11】:

您需要使用旧版本的数据连接驱动程序 (2007 Office System Driver: Data Connectivity Components) 并在连接管理器配置窗口中选择 Excel 版本 2007-2010。 我认为 Office 2016 的最新数据连接驱动程序已损坏

【讨论】:

【参考方案12】:

简单的解决方法是打开文件并在 Excel 中按保存按钮(无需更改格式)。一旦保存在 excel 中,它将开始工作,您应该能够在 DFT 中看到它的工作表。

【讨论】:

人工干预对我有用,但我如何按计划实现它。【参考方案13】:

我今天也遇到了这个问题,但找到了与使用 Excel 97-2003 不同的解决方案。根据Maderia的说法,问题是SSDT(SQL Server Data Tools)是32位应用程序,只能使用32位提供者;但您可能安装了 64 位 ACE OLE DB 提供程序。您可以尝试安装 32 位提供程序,但不能同时安装 64 和 32 版本。 Maderia 建议的解决方案(我发现对我有用)是在我导入/导出 Excel 2007 文件的任务上设置 DelayValidation = TRUE。

【讨论】:

有机会我会尝试一下,听起来很有希望。 尝试右键项目名称->配置属性->调试->Run64BitRuntime->False

以上是关于SSIS Excel 连接管理器无法连接到源的主要内容,如果未能解决你的问题,请参考以下文章

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

SSIS Excel连接“无法加载任何表或视图”

SSIS在Unicode和非Unicode错误之间转换

SSIS 包动态连接中的异常处理

Odata:无法从运行时连接管理器获取托管连接

Excel 连接管理器的 SSIS 包问题