通过 Microsoft.Ace.OLEDB 接口导入 EXCEL 到SQLSERVER

Posted challengesoflife

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过 Microsoft.Ace.OLEDB 接口导入 EXCEL 到SQLSERVER相关的知识,希望对你有一定的参考价值。

使用前确保安装 AccessDatabaseEngine_X64.exe

 

本机环境:

win7 x64 SP1 旗舰版

SqlServer 2008 R2

Office 2010 32位版

 

使用过程中遇到过的异常:

无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Ace.OLEDB.12.0" 的实例。

因为 OLE DB 访问接口 ‘Microsoft.Ace.OLEDB.12.0‘ 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。
 

解决方案是卸载Office 2010 32位版,重新安装Office 2010 64位版

 

完整脚本

-- 开启导入功能
EXEC sp_configure show advanced options,1
reconfigure
exec sp_configure Ad Hoc Distributed Queries,1
RECONFIGURE

--允许在进程中使用ACE.OLEDB.12
EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NAllowInProcess, 1
--允许动态参数
EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NDynamicParameters, 1
SELECT * FROM OPENDATASOURCE(Microsoft.ACE.OLEDB.12.0,Excel 12.0;HDR=Yes;IMEX=1;Data Source=C:Users	Desktoppanziyang.xlsx)...[Sheet3$] ;

-- 关闭设置
EXEC sp_configure show advanced options,0
reconfigure
exec sp_configure Ad Hoc Distributed Queries,0
RECONFIGURE

-- 关闭设置 ACE.OLEDB.12
EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NAllowInProcess, 0
--允许动态参数
EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NDynamicParameters, 0

 

 

以上是关于通过 Microsoft.Ace.OLEDB 接口导入 EXCEL 到SQLSERVER的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver 2005 访问接口中没有microsoft.ACE.OLEDB.12.0

通过 Openrowset 和 Microsoft.ACE.OLEDB.12.0 从 csv 导入(到不同的列)

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别(转)

“Microsoft.ACE.OLEDB.12.0”尚未注册

Microsoft.Jet.OLEDB.4.0 与 Microsoft.ACE.OLEDB.12.0,我应该使用哪个?