SQL SERVER 2008 64位系统无法导入ACCESS/EXCEL怎么办 |
操作系统Windows Server 2008 X64,数据库SQL Server 2008 X64,Office 2007(好像只有32位),在存储过程执行OpenDatasource导入Access数据的时候遇到问题了,Oledb 4.0已经不被支持,以下是遇到的若干错误提示: 因为 OLE DB 访问接口 Microsoft.Jet.OLEDB.4.0 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询 。 因为 OLE DB 访问接口 Microsoft.Ace.OLEDB.12.0 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询 。 解决方案是安装Office 2010 64位版, 网上有很多下载,然后下载Microsoft Access Database Engine 2010 的X64版本,网上也有下载,两者缺一不可 。 然后改一下OpenDatasource参数,将 Microsoft.Jet.OLEDB.4.0 改为 Microsoft.ACE.OLEDB.12.0,大功告成 。 贴上存储过程部分代码: --开启导入功能 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 --导入临时表 exec (insert into jihua(id,[批次号],Right(+ @filepath +,charindex(\,REVERSE(+ @filepath +))-1),getdate() FROM OPENDATASOURCE (Microsoft.ACE.OLEDB.12.0, Data Source=+@filepath+;User ID=Admin;Password= )...计划汇总表) --注意这里,要先关闭外围的设置,然后再关闭高级选项 exec sp_configureAd Hoc Distributed Queries,0 reconfigure exec sp_configureshow advanced options,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 以上内容仅是我的个人见解,相信解决办法不止以上所述,希望大家多多分享自己的意见,共同交流学习进步 。希望本文关于SQL SERVER 2008 64位系统无法导入ACCESS/EXCEL的解决方案对大家有所帮助 。 |