我的机器上安装了 sql server 2008 R2 64bit Developer's Edition。
和 Microsoft Office 2010 Professional 32 位。
我一直在尝试将一些 Excel 数据从 Excel 工作表导入 sql server 数据库。我使用以下查询来执行此操作:
询问
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\Files\BlueFile.xlsx;IMEX=1',
'SELECT * FROM [Sheet1$]')
我了解 sql server 默认情况下已禁用此功能作为安全措施,但是我执行了以下语句来启用它。
配置
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
错误信息
然而,每次我执行 select 语句以从 Excel 表中获取数据时,都会出现以下错误。
消息 7308,级别 16,状态 1,第 1 行 OLE DB 提供程序
“Microsoft.Jet.OLEDB.4.0”不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行。
正如 Mark 在评论中提到的那样,您在驱动程序集之间遇到了位级别的不匹配。您将需要安装 Office 的 64 位安装(在本例中特别是 Excel)或安装 SQL Server 的 32 位安装并将数据导入该实例。