操作系統(tǒng)Windows Server 2008 X64,數(shù)據(jù)庫SQL Server 2008 X64,Office 2007(好像只有32位),在存儲(chǔ)過程執(zhí)行OpenDatasource導(dǎo)入Access數(shù)據(jù)的時(shí)候遇到問題了,Oledb 4.0已經(jīng)不被支持,以下是遇到的若干錯(cuò)誤提示:
因?yàn)?OLE DB 訪問接口 'Microsoft.Jet.OLEDB.4.0' 配置為在單線程單元模式下運(yùn)行,所以該訪問接口無法用于分布式查詢。
無法創(chuàng)建鏈接服務(wù)器 "(null)" 的 OLE DB 訪問接口 "Microsoft.Ace.OLEDB.12.0" 的實(shí)例。
因?yàn)?OLE DB 訪問接口 'Microsoft.Ace.OLEDB.12.0' 配置為在單線程單元模式下運(yùn)行,所以該訪問接口無法用于分布式查詢 。
解決方案是安裝Office 2010 64位版, 網(wǎng)上有很多下載,然后下載Microsoft Access Database Engine 2010 的X64版本,網(wǎng)上也有下載,兩者缺一不可。
然后改一下OpenDatasource參數(shù),將 Microsoft.Jet.OLEDB.4.0 改為 Microsoft.ACE.OLEDB.12.0,大功告成。
貼上存儲(chǔ)過程部分代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
--開啟導(dǎo)入功能 exec sp_configure 'show advanced options' ,1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries' ,1 reconfigure --允許在進(jìn)程中使用ACE.OLEDB.12 EXEC master.dbo.sp_MSset_oledb_prop N 'Microsoft.ACE.OLEDB.12.0' , N 'AllowInProcess' , 1 --允許動(dòng)態(tài)參數(shù) EXEC master.dbo.sp_MSset_oledb_prop N 'Microsoft.ACE.OLEDB.12.0' , N 'DynamicParameters' , 1 --導(dǎo)入臨時(shí)表 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 = '' )...計(jì)劃匯總表 ') --注意這里,要先關(guān)閉外圍的設(shè)置,然后再關(guān)閉高級選項(xiàng) exec sp_configure' Ad Hoc Distributed Queries ',0 reconfigure exec sp_configure' show advanced options ',0 reconfigure --關(guān)閉ACE.OLEDB.12的選項(xiàng) 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 |
以上內(nèi)容僅是我的個(gè)人見解,相信解決辦法不止以上所述,希望大家多多分享自己的意見,共同交流學(xué)習(xí)進(jìn)步。希望本文關(guān)于SQL SERVER 2008 64位系統(tǒng)無法導(dǎo)入ACCESS/EXCEL的解決方案對大家有所幫助。