终于解决SQL Server 2008 64位系统无法导入Access/Excel的问题 2012/08/01

本文介绍了解决在Windows Server 2008 X64环境下,使用SQL Server存储过程执行OpenDatasource导入Access数据时遇到的OLEDB访问接口配置问题的方法。主要涉及安装Office2010 64位版及Microsoft Access Database Engine 2010 X64版本,并修改存储过程参数,将Microsoft.Jet.OLEDB.4.0替换为Microsoft.ACE.OLEDB.12.0,从而解决分布式查询受限的问题。

最近更换了新服务器,操作系统Windows Server 2008 X64,数据库SQL Server 2008 X64,Office 2007(好像只有32位),在存储过程执行OpenDatasource导入Access数据的时候遇到问题了,Oledb 4.0已经不被支持,以下是遇到的若干错误提示:

 

 

因为 OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。
无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Ace.OLEDB.12.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 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
    
    --导入临时表 
    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_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.OLEDB.12.0', N'DynamicParameters'0

 

 

 

转载于:https://www.cnblogs.com/habin/archive/2012/08/01/2618845.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值