OLE DB提供程序"Microsoft.Jet.OLEDB.4.0"不能用于分布式查询

Pரத*_*ீப் 22 sql sql-server excel

我想使用查询将数据从Excel导入SQL Server,而不是使用向导.我试过这个查询:

Select * INTO g FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 12.0;Database=D:\new.xlsx;HDR=YES', 'SELECT * FROM [newSheet$]');
Run Code Online (Sandbox Code Playgroud)

但是,我收到了这个错误:

消息7308,级别16,状态1,行1
OLE DB提供程序"Microsoft.Jet.OLEDB.4.0"不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行.

所以我在谷歌搜索,得到的回答如下:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)

即使在重新配置后它也会向我显示相同的错误......

age*_*ega 30

根据这个帖子,:

64位操作系统不支持Microsoft.Jet.OLEDB.4.0

假设您运行的是64位SQL Server,则可能需要64位Microsoft Access数据库引擎2010可再发行组件.

请注意,如果已安装其他版本,则在尝试安装软件时会出现轻微的皱纹.在这种情况下,使用/ passive开关从命令行安装第二个版本.根据这个帖子:

在具有除当前安装之外的Office安装(例如,64 on 64)的计算机上启动Microsoft ACE OLEDB Provider的安装将导致安装失败.要使其正常运行,您需要从命令行启动它,并指定"/ passive"参数.

这是在谈论现有的Office安装,但同样适用于共存的数据库引擎安装.

编辑:还要确保使用"Microsoft.ACE.OLEDB.12.0"而不是"Microsoft.Jet.OLEDB.4.0"作为提供程序字符串.(@Rumi的道具)