我在64位计算机(使用Windows 10)上使用MS Office 2013 64位(在卸载32位Office 2013之后),并通过IP地址连接SQL Server 2014 Express。
我的目标是让SQL Server使用“SELECT * FROM OPENROWSET()”语句读取Excel数据。
我的问题是:我安装了“AccessDatabaseEngine_x64.exe”,但在执行“openrowset()”时,SQL Server给我错误消息“32位OLE DB提供程序”Microsoft.ACE.OLEDB.12.0“无法加载在64位SQL Server上进行处理。“请阅读以下内容,以便了解我进行了大量的研究和试验。
问题是:在这种情况下我应该使用AccessDatabaseEngine还是AccessDatabaseEngine_x64?怎么样?
背景 - 使这个问题变得复杂: 当我在我的计算机上有32位办公室,并在SQL Server的“数据库”下使用“导入”功能导入excel(.xlsx)数据时,SQL Server强制我安装AccessDatabaseEngine(32位)。所以我做了。导入成功了。 但是我想让SQL Server动态读取本地excel文件而不导入,所以我决定在SQL Server中使用“新建链接服务器”功能将excel设置为服务器,但是失败了。错误消息msg基本上是“无法为链接服务器”Mycomputer“初始化OLE DB提供程序'SQLNCLI11'的数据源对象。然后我找到了”openrowset / opendatasource“语句,在SQL Server上尝试了它,并得到了错误信息:”32 -bit OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”无法在64位SQL Server上进行加载。“我尝试的解决方案如下:
1)卸载AccessDatabaseEngine;
2)insularled AccessDatabaseEngine_x64(检查注册表项以确保其注册);
3)根据“https://blogs.msdn.microsoft.com/farukcelik/2010/06/04/accessing-excel-files-on-a-x64-machine/”运行配置;
4)再次运行“openrowset / opendatasource”但仍然得到msg“Microsoft.ACE.OLEDB.12.0”无法在64位SQL Server上进行加载。“只是现在,我无法导入excel( .xlsx)再进入SQL Server,我猜因为卸载了AccessDatabaseEngine;
5)卸载32位办公室;
6)安装了64位办公室;
7)再次运行“openrowset / opendatasource”,仍然得到msg“Microsoft.ACE.OLEDB.12.0”无法在64位SQL Server上加载进程。“
8)卸载AccessDatabaseEngine_x64;
9)安装了AccessDatabaseEngine,再次运行“openrowset / opendatasource”,仍然得到msg“Microsoft.ACE.OLEDB.12.0”无法在64位SQL Server上加载进程。“
我尝试的“Openrowset”声明就像:
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0 Xml;
Database=C:\documents\2016.xlsx',
[sheet1$]);
因此,对于32位办公室或64位办公室来说,似乎AccessDatabaseEngine和AccessDatabaseEngine_x64都不适用于我。
我错过了什么吗?
谢谢!