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.0 到 Microsoft.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 连接管理器无法连接到源的主要内容,如果未能解决你的问题,请参考以下文章