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

Pat*_*ada 40 sql-server ssis visual-studio-2010 visual-studio sql-server-2012

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

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

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

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

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

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

小智 49

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

请记住,如果您想以64位​​(您应该瞄准)运行您的软件包,您将需要32位数据提供程序(用于SSDT中的开发)以及64位数据提供程序(用于在生产中执行包).

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

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


资源:

  • 此外,我必须将 **Properties** 窗口中 **Connection String** 中的 **Provider** 从 **Microsoft.Jet.OLEDB.4.0** 更改为 **Microsoft.ACE.OLEDB.12.0** (2认同)

Pat*_*ada 29

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


Man*_*bar 7

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

  • 尝试右键单击项目名称 - >配置属性 - >调试 - > Run64BitRuntime - > False (2认同)

小智 5

本文中的建议为我解决了使用SSIS从Excel提取数据的问题。

我从该文章的链接中下载了MS Access Database Engine 2010 32位驱动程序。

还要设置项目配置属性以进行调试 Run64BitRuntime = False

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

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