Microsoft.ACE.OLEDB.12.0未注册

use*_*998 45 ssis

我有一个运行在服务器上的每月运行的SQL Server作业.Job正在使用SSIS包,并且应该从数据库中提取数据并创建Excel工作表并将数据复制到Excel 2003中.

由于Excel 2003中的截断问题,我实际上从数据库获得了大约140,000行(Excel支持64,000行).所以我修改了配置文件以支持2007 Excel格式.

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="  +  @[User::FullPath]  + ";Extended Properties=\"Excel 12.0;HDR=YES\"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行作业时,它无法显示错误消息:

"请求的OLE DB提供程序Microsoft.ACE.OLEDB.12.0未注册"

Ale*_*roR 65

总结:安装32位版本Microsoft Access数据库引擎2010可再发行组件.如果以前安装过,请卸载64位版本.http://www.microsoft.com/en-us/download/details.aspx?id=13255

当版本高于2007(xlsx)时,Excel连接管理器正在尝试使用ACE OLE DB提供程序来访问Excel文件.虽然您的盒子是64位,但您使用的是SQL Server数据工具,它是一个32位应用程序.SSDT没有64位版本.在SSDT中设计软件包时,您使用的是32位进程,该进程只能使用32位提供程序.当您尝试在Excel文件中选择表时,连接管理器需要访问32位版本的ACE OLE DB提供程序,但此提供程序未在您的计算机上注册,只安装了64位版本.

您应下载32位版本的"Microsoft Access数据库引擎2010可再发行组件".当您尝试安装它时,您可能会收到一条错误消息.您应该首先卸载您之前可能安装的64位版本的"Microsoft Access数据库引擎2010可再发行组件".64位版本和32位版本不能在同一主机上共存,因此如果要在它们之间切换,则必须卸载(通过"程序和功能")并安装另一个版本.

卸载完64位版本并安装32位版本的提供程序后,问题就解决了,您最终可以在Excel文件中选择该表.Excel连接管理器现在可以使用ACE OLE DB提供程序(32位版本)来访问Excel文件.


Chi*_*rld 9

有一种改变方式.在Microsoft Office Excel中打开Excel文件,并将其另存为"Excel 97-2003工作簿".然后,在文件连接中使用新保存的excel文件.


TMN*_*014 6

我认为只需安装OLEDB驱动程序就可以逃脱 - http://www.microsoft.com/en-us/download/details.aspx?id=13255


小智 6

另一种选择是以32位模式运行包.点击解决方案=> properties =?Debugging =>将64位运行设置为false.


Luk*_*ett 6

我安装了上面提到的"Microsoft Access数据库引擎2010可再发行组件",并且当它似乎是一个版本问题时得到了侧面跟踪的故障排除问题.

安装"2007 Office System驱动程序:数据连接组件"为我排序.

https://www.microsoft.com/en-us/download/details.aspx?id=23734


小智 5

对我来说,最简单的解决方法是更改​​SQL Agent作业以在32位运行时中运行。转到SQL Job>右键单击属性>步骤>编辑(步骤)>执行选项选项卡>使用32位运行时

屏幕截图