通过 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 N‘Microsoft.ACE.OLEDB.12.0‘, N‘AllowInProcess‘, 1 --允许动态参数 EXEC master.dbo.sp_MSset_oledb_prop N‘Microsoft.ACE.OLEDB.12.0‘, N‘DynamicParameters‘, 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 N‘Microsoft.ACE.OLEDB.12.0‘, N‘AllowInProcess‘, 0 --允许动态参数 EXEC master.dbo.sp_MSset_oledb_prop N‘Microsoft.ACE.OLEDB.12.0‘, N‘DynamicParameters‘, 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的区别(转)