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 * into [YTYJPT.MDF].[dbo].[表名]
from openrowset(
'Microsoft.Ace.OleDb.12.0',
'Excel 12.0;HDR=NO;IMEX=1;Database=C:\data\temp\excel文件名.xlsx',
[sheet1名字$])

--注意这里,要先关闭外围的设置,然后再关闭高级选项
exec sp_configure'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure'show advanced options',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.OLED



可能出现问题:

因为 OLE DB 访问接口 'Microsoft.Ace.OleDb.12.0' 配置为在单线程单元模式下运行

所以该访问接口无法用于分布式查询 。


解决方案是

1、安装Office 2010 64位版

2、Microsoft Access Database Engine 2010 的X64版本

我计算机系统是64位系统,64为的sqlserver2008 R2