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

时间:2014-05-27 18:52:33

标签: sql-server visual-studio-2010 visual-studio ssis sql-server-2012

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

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

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

我无法在任何地方找到此错误,我不知道它为什么会失败。该目录与Authenticated用户共享,该文件未在使用中。

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

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

14 个答案:

答案 0 :(得分:40)

似乎没有安装32位版本的Excel。请记住,SSDT是一个32位IDE。因此,当从SSDT访问数据时,使用32位数据提供者。在SSDT之外运行程序包时,它以64位模式运行(并非总是如此,但主要是)并使用64位数据提供程序。

请记住,如果您想以64位​​运行程序包(您应该以此为目标),则需要32位数据提供程序(用于SSDT中的开发)以及64位数据提供者(用于在生产中执行包)。

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

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

来源:

答案 1 :(得分:27)

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

答案 2 :(得分:7)

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

答案 3 :(得分:4)

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

答案 4 :(得分:4)

本文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环境中都有效。

答案 5 :(得分:3)

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

答案 6 :(得分:1)

如下所述:

解决方案: 转到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,以解决此问题。抱歉给您带来不便。

答案 7 :(得分:0)

我的答案与@biscoop的答案非常相似,但我会详细说明可能适用于该问题或其他人。

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

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

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

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

对于Excel来源, 在执行此步骤之前,您需要更改设置。将Excel文件另存为2010 format.xlsx

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

  1. 拖放excel源文件
  2. 双击excel源并连接excel。任何方式,您都将得到相同的错误,而表或视图将无法加载。...
  3. 点击确定
  4. 右键单击excel源,然后单击“显示高级编辑”。
  5. 单击该组件的属性。
  6. 您可以看到 openrowset 。在右侧,您需要输入excel表格名称示例:如果在excel sheet1中,则需要输入sheet1 $。即以美元符号结尾。然后单击确定。
  7. 现在您可以进行其他连接目的地的工作。

我正在使用Visual Studio 2017,SQL Server 2017,Office 2016和Microsoft Access数据库2010引擎32位。 OS Windows 10 64位。

这是临时解决方案。因为许多人正在寻找这种类型的问题。最终,我弄清楚了该解决方案在任何网站上均不可用。

答案 10 :(得分:0)

这是对我来说很好的解决方案

我刚刚将Excel文件另存为 Excel 97-2003版本enter image description here

答案 11 :(得分:0)

您可以尝试以下操作:

卸载office365

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

还设置了用于调试Run64BitRuntime = False的项目配置属性

应该可以。

答案 12 :(得分:0)

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

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

enter image description here

答案 13 :(得分:-1)

对于我来说,“ Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。您可以在这里https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255